python sklearn学习笔记大全(常见代码速查)
skleran是python中常見的機(jī)器學(xué)習(xí)包,整理下筆記。方便查詢。
官方文檔鏈接:sklearn官方英文文檔
常見模型
from sklearn.linear_model import LinearRegression#線性回歸 lr=LinearRegression(normalize=True)#SVC,SVR from sklearn.svm import SVC,SVR svc=SVC(kernel='linear')#貝葉斯 from sklearn.naive_bayes import GaussianNB gnb=GaussianNB() #KNN from sklearn.neighbors import KNeighborsClassifier knn=KNeighborsClassifier(n_neighbors=2)#無監(jiān)督模型 from sklearn.decomposition import PCA pca=PCA(n_components=0.95) from sklearn.cluster import KMeans k_means=KMeans(n_clusters=6,random_state=1)模型訓(xùn)練
lr.fit(x,y)k_means.fit(x,y) pca.fit_transform(x,y)模型預(yù)測
y_pred=lr.predict(x_test) y_pred=knn.predict_proba(x_test)評價(jià)函數(shù)
分類
準(zhǔn)確率
混淆矩陣
from sklearn.metrics import confusion_matrix y_true = [2, 0, 2, 2, 0, 1] y_pred = [0, 0, 2, 2, 0, 2] confusion_matrix(y_true, y_pred) array([[2, 0, 0],[0, 0, 1],[1, 0, 2]])分類報(bào)告
classification_report函數(shù)構(gòu)建了一個(gè)文本報(bào)告,用于展示主要的分類metrics。 下例給出了一個(gè)小示例,它使用定制的target_names和對應(yīng)的label:
回歸
from sklearn.metrics import mean_squared_error#簡稱MSE,即均方誤差 from sklearn.metrics import median_absolute_error#abs(y_pred-y_test) from sklearn.metrics import mean_squared_log_error from sklearn.metrics import mean_absolute_error#(MAE) from sklearn.metrics import r2_score聚類
函數(shù):
def silhouette_score(X, labels, metric=‘euclidean’, sample_size=None,
random_state=None, **kwds):
函數(shù)值說明:
所有樣本的s i 的均值稱為聚類結(jié)果的輪廓系數(shù),定義為S,是該聚類是否合理、有效的度量。聚類結(jié)果的輪廓系數(shù)的取值在【-1,1】之間,值越大,說明同類樣本相距約近,不同樣本相距越遠(yuǎn),則聚類效果越好。
函數(shù):
def calinski_harabasz_score(X, labels):
函數(shù)值說明:
類別內(nèi)部數(shù)據(jù)的協(xié)方差越小越好,類別之間的協(xié)方差越大越好,這樣的Calinski-Harabasz分?jǐn)?shù)會高。 總結(jié)起來一句話:CH index的數(shù)值越大越好。
交叉驗(yàn)證
將原始數(shù)據(jù)分成K組(一般是均分),將每個(gè)子集數(shù)據(jù)分別做一次驗(yàn)證集,其余的K-1組子集數(shù)據(jù)作為訓(xùn)練集,這樣會得到K個(gè)模型,用這K個(gè)模型最終的驗(yàn)證集的分類準(zhǔn)確率的平均數(shù)作為此K-CV下分類器的性能指標(biāo)。K一般大于等于2,實(shí)際操作時(shí)一般從3開始取,只有在原始數(shù)據(jù)集合數(shù)據(jù)量小的時(shí)候才會嘗試取2。K-CV可以有效的避免過學(xué)習(xí)以及欠學(xué)習(xí)狀態(tài)的發(fā)生,最后得到的結(jié)果也比較具有說服性。
網(wǎng)格搜索
GridSearchCV,它存在的意義就是自動調(diào)參,只要把參數(shù)輸進(jìn)去,就能給出最優(yōu)化的結(jié)果和參數(shù)。但是這個(gè)方法適合于小數(shù)據(jù)集,一旦數(shù)據(jù)的量級上去了,很難得出結(jié)果。這個(gè)時(shí)候就是需要動腦筋了。數(shù)據(jù)量比較大的時(shí)候可以使用一個(gè)快速調(diào)優(yōu)的方法——坐標(biāo)下降。它其實(shí)是一種貪心算法:拿當(dāng)前對模型影響最大的參數(shù)調(diào)優(yōu),直到最優(yōu)化;再拿下一個(gè)影響最大的參數(shù)調(diào)優(yōu),如此下去,直到所有的參數(shù)調(diào)整完畢。這個(gè)方法的缺點(diǎn)就是可能會調(diào)到局部最優(yōu)而不是全局最優(yōu),但是省時(shí)間省力,巨大的優(yōu)勢面前,還是試一試吧,后續(xù)可以再拿bagging再優(yōu)化。
grid.fit():運(yùn)行網(wǎng)格搜索
best_params_:描述了已取得最佳結(jié)果的參數(shù)的組合
best_score_:成員提供優(yōu)化過程期間觀察到的最好的評分
歸一化和標(biāo)準(zhǔn)化
歸一化
from sklearn.preprocessing import MinMaxScaler mm = MinMaxScaler()data = mm.fit_transform(shuju ) print(data)mm.transform(X_test) mm.inverse_transform()#還原標(biāo)準(zhǔn)化
from sklearn.preprocessing import StandardScaler std = StandardScaler() 方法同歸一化標(biāo)簽編碼
第一步:先對離散的數(shù)字、離散的文本、離散的類別進(jìn)行編號,使用 LabelEncoder,LabelEncoder會根據(jù)取值的種類進(jìn)行標(biāo)注。
import sklearn.preprocessing as pre_processing import numpy as nplabel=pre_processing.LabelEncoder() labels=label.fit_transform(['中國','美國','法國','德國']) print(labels)labels的結(jié)果為:[0,3,2,1]
第二步:然后進(jìn)行獨(dú)熱編碼,使用OneHotEncoder
labels=np.array(labels).reshape(len(labels),1) #先將X組織成(sample,feature)的格式onehot=pre_processing.OneHotEncoder() onehot_label=onehot.fit_transform(labels) print(onehot_label.toarray()) #這里一定要進(jìn)行toarray()結(jié)果為:
[[1. 0. 0. 0.]
[0. 0. 0. 1.]
[0. 0. 1. 0.]
[0. 1. 0. 0.]]
注意,上面的第二步也可以使用LabelBinarizer進(jìn)行替代
onehot_label=pre_processing.LabelBinarizer().fit_transform(labels)
這里的參數(shù)labels就是【0,3,2,1】,不需要組織成(samples,features)的形式。
多項(xiàng)式特征
from sklearn.preprocessing import PolynomialFeatures # include polynomials up to x ** 10: poly = PolynomialFeatures(degree=10) poly.fit(X) X_poly = poly.transform(X)
電氣專業(yè)的計(jì)算機(jī)萌新:余登武。寫博文不容易。如果你覺得本文對你有用,請點(diǎn)個(gè)贊支持下,謝謝。
總結(jié)
以上是生活随笔為你收集整理的python sklearn学习笔记大全(常见代码速查)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql导入表格,txt操作(以及常见
- 下一篇: python 实现文本自动翻译功能