一.機器學(xué)習(xí)開發(fā)流程
1.獲取數(shù)據(jù)? ?(公司本身就有,合作過來的數(shù)據(jù),購買的數(shù)據(jù))
2.數(shù)據(jù)的基本處理:pd去處理(缺失值,合并表。。。)
3.特征工程(特征進行處理)(重要)
4.找合適的算法進行預(yù)測? 所謂模型=算法+數(shù)據(jù)得出來的
5.模型得評估,判定效果 ????
6.若評估沒有合格:1.換算法 或者調(diào)參 2.特征工程
7.評估合格?上線使用,以API形式提供
二.數(shù)據(jù)的劃分
數(shù)據(jù) = 訓(xùn)練集 + 測試集 一般分類范圍[70%,30%],[80%,20%],[75%,25%] 選擇[75%,25%]最多
訓(xùn)練集:用于訓(xùn)練,構(gòu)造模型
測試集:用于評估模型是否有效
數(shù)據(jù)劃分API: from sklearn.model_selection import train_test_split
train_test_split(x,y,test_size=None,random_state=None)
x:數(shù)據(jù)集的特征值?
y:數(shù)據(jù)集的標(biāo)簽值?
test_size:測試集的大小,float類型?
random_state:隨機數(shù)種子,不同的種子會造成不同隨機采樣的結(jié)果,相同的種子采樣結(jié)果相同
return:x_train(訓(xùn)練集特征值), x_test(測試集特征值),y_train(訓(xùn)練集標(biāo)簽值),y_test(測試集標(biāo)簽值)
三.轉(zhuǎn)換器和估計器
轉(zhuǎn)換器
? ??????fit_transform():輸入數(shù)據(jù),直接轉(zhuǎn)換
? ??????fit():輸入數(shù)據(jù),但不做事情 (計算平均值,方差等等)
? ??????transform():進行數(shù)據(jù)的轉(zhuǎn)換
估計器
? ? ? ? 用于分類的估計器:
? ? ? ? ? ? ? ? ? ? sklearn.neighbors k近鄰
? ? ? ? ? ? ? ? ? ? sklearn.naive_bayes 樸素貝葉斯
? ? ? ? ? ? ? ? ? ? sklearn.linear_model.LogisticRegression 邏輯回歸
? ? ? ? ? ? ? ? ? ? sklearn.tree 決策樹
? ? ? ? 用于回歸的估計器:
? ? ? ? ? ? ? ? ? ? sklearn.linear_model.LinearRegression 線性回歸
? ? ? ? ? ? ? ? ? ? sklearn.linear_model.Ridge 嶺回歸
估計器使用流程:1.調(diào)用fit(x_train,y_train)傳入訓(xùn)練集特征值,訓(xùn)練集標(biāo)簽值
? ???????????????????????????2.輸入測試集的數(shù)據(jù)(y_predict = predict(x_test) 得到模型的預(yù)測值) (預(yù)測準(zhǔn)確率:score(x_test,y_test))
四.算法的分類
先將訓(xùn)練數(shù)據(jù)分為監(jiān)督學(xué)習(xí)和非監(jiān)督學(xué)習(xí)
監(jiān)督學(xué)習(xí):訓(xùn)練數(shù)據(jù)擁有標(biāo)記信息得學(xué)習(xí)任務(wù)
非監(jiān)督學(xué)習(xí):訓(xùn)練數(shù)據(jù)沒有標(biāo)記信息得學(xué)習(xí)任務(wù)
監(jiān)督學(xué)習(xí)
? ?????????1.分類(目標(biāo)值是離散值得學(xué)習(xí)任務(wù)):k-近鄰,樸素貝葉斯,決策樹和隨機森林,邏輯回歸,神經(jīng)網(wǎng)絡(luò)
? ? ? ? ? ? 2.回歸(目標(biāo)值是連續(xù)值得學(xué)習(xí)任務(wù)):線性回歸,嶺回歸
? ? ? ? ? ? 3.標(biāo)注:隱馬爾可夫模型
非監(jiān)督學(xué)習(xí)
? ? ? ? ? ? 聚類 : k-means
五.模型評估標(biāo)準(zhǔn)
準(zhǔn)確率,精確率和召回率
精確率:預(yù)測結(jié)果為正例樣本中真實為正例的比例(查得準(zhǔn))
召回率:真實為正例的樣本中預(yù)測結(jié)果為正例的比例(查的對)
分類評估的API: from sklearn.metrics import classification_report(y_true,y_predict,target_names=None)
y_true:真實目標(biāo)值
y_predict:預(yù)測目標(biāo)值
target_names:目標(biāo)類別名稱
return:每個類別精確率和召回率
六:模型選擇與調(diào)優(yōu)
交叉驗證和網(wǎng)格搜索
交叉驗證:將拿到的訓(xùn)練集的數(shù)據(jù),分成訓(xùn)練和驗證
網(wǎng)格搜索:很多參數(shù)需要手動指定的(如k-近鄰的k值),叫做超參數(shù),每組超參數(shù)都采用交叉驗證去進行評估,最后選擇最優(yōu)參數(shù)組合建立模型
超參數(shù)搜索API:from sklearn.model_selection import GridSearchCV(estimator,param_grid=None,cv=None)
estimator:估計器對象
param_grid:估計器參數(shù){}字典形式
cv:指定幾折交叉驗證
結(jié)果分析:best_score_:最好的準(zhǔn)確率
? ? ? ? ? ? ? ? ? best_estimator_:最好的模型
? ? ? ? ? ? ? ? ? ?cv_results_: 每次交叉驗證后測試集準(zhǔn)確率結(jié)果和訓(xùn)練集準(zhǔn)確率結(jié)果
