比較KNN、邏輯回歸、SVM三種算法的分類效果


還是水果分類原始數據,這次使用KNN、邏輯回歸、SVM三種算法實現水果分類器,看哪種算法效果好。
輸出如下:
KNN模型的准確率是:75.00% 邏輯回歸模型參數是:[[-0.05274036 4.80089662 -0.2919612 9.34272797] [-0.32977103 6.31580761 -1.35272117 1.14952952] [-0.23650438 -8.17278107 11.71949993 -1.45948241] [ 0.02063462 0.29756545 -0.29966445 2.01418258]];截距是:[-31.55768938 1.34960096 -0.68908458 -5.76087243] LogicRe模型的准確率是:58.33% SVM模型的准確率是:50.00%
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.svm import SVC

data_path = './data/fruit_data.csv'
output_dir = './output/'

label_dict = {'apple':0,
               'mandarin':1,
               'lemon':2,
               'orange':3
            }
feat_cols = ['mass','width','height','color_score']

if __name__ == '__main__':
    data_df = pd.read_csv(data_path)
    data_df['label'] = data_df['fruit_name'].map(label_dict)

    X = data_df[feat_cols]
    y = data_df['label']
    X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.2,random_state=19)

    model_dict = {
        'KNN':KNeighborsClassifier(n_neighbors=3),
        # C值越小表示越強的正則化,也就是更弱復雜度;C值默認為1.0;后面2個參數不設置會有警告
        'LogicRe':LogisticRegression(C=1e3,solver='liblinear',multi_class='auto'),
        'SVM':SVC(C=1e3,gamma='auto')               # C值越小表示越強的正則化,也就是更弱復雜度;C值默認為1.0
    }


    for model_name,model in model_dict.items():
        model.fit(X_train,y_train)
        accuracy = model.score(X_test,y_test)
        if model_name == 'LogicRe':   # 會有4組數,分別對應4種水果的概率
            print('邏輯回歸模型參數是:{};截距是:{}'.format(model.coef_,model.intercept_))
        print('{}模型的准確率是:{:.2f}%'.format(model_name,accuracy*100))


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM