python sklearn学习笔记大全(常见代码速查)
skleran是python中常見的機器學習包,整理下筆記。方便查詢。
官方文檔鏈接: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)#無監督模型 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)模型訓練
lr.fit(x,y)k_means.fit(x,y) pca.fit_transform(x,y)模型預測
y_pred=lr.predict(x_test) y_pred=knn.predict_proba(x_test)評價函數
分類
準確率
混淆矩陣
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]])分類報告
classification_report函數構建了一個文本報告,用于展示主要的分類metrics。 下例給出了一個小示例,它使用定制的target_names和對應的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聚類
函數:
def silhouette_score(X, labels, metric=‘euclidean’, sample_size=None,
random_state=None, **kwds):
函數值說明:
所有樣本的s i 的均值稱為聚類結果的輪廓系數,定義為S,是該聚類是否合理、有效的度量。聚類結果的輪廓系數的取值在【-1,1】之間,值越大,說明同類樣本相距約近,不同樣本相距越遠,則聚類效果越好。
函數:
def calinski_harabasz_score(X, labels):
函數值說明:
類別內部數據的協方差越小越好,類別之間的協方差越大越好,這樣的Calinski-Harabasz分數會高。 總結起來一句話:CH index的數值越大越好。
交叉驗證
將原始數據分成K組(一般是均分),將每個子集數據分別做一次驗證集,其余的K-1組子集數據作為訓練集,這樣會得到K個模型,用這K個模型最終的驗證集的分類準確率的平均數作為此K-CV下分類器的性能指標。K一般大于等于2,實際操作時一般從3開始取,只有在原始數據集合數據量小的時候才會嘗試取2。K-CV可以有效的避免過學習以及欠學習狀態的發生,最后得到的結果也比較具有說服性。
網格搜索
GridSearchCV,它存在的意義就是自動調參,只要把參數輸進去,就能給出最優化的結果和參數。但是這個方法適合于小數據集,一旦數據的量級上去了,很難得出結果。這個時候就是需要動腦筋了。數據量比較大的時候可以使用一個快速調優的方法——坐標下降。它其實是一種貪心算法:拿當前對模型影響最大的參數調優,直到最優化;再拿下一個影響最大的參數調優,如此下去,直到所有的參數調整完畢。這個方法的缺點就是可能會調到局部最優而不是全局最優,但是省時間省力,巨大的優勢面前,還是試一試吧,后續可以再拿bagging再優化。
grid.fit():運行網格搜索
best_params_:描述了已取得最佳結果的參數的組合
best_score_:成員提供優化過程期間觀察到的最好的評分
歸一化和標準化
歸一化
from sklearn.preprocessing import MinMaxScaler mm = MinMaxScaler()data = mm.fit_transform(shuju ) print(data)mm.transform(X_test) mm.inverse_transform()#還原標準化
from sklearn.preprocessing import StandardScaler std = StandardScaler() 方法同歸一化標簽編碼
第一步:先對離散的數字、離散的文本、離散的類別進行編號,使用 LabelEncoder,LabelEncoder會根據取值的種類進行標注。
import sklearn.preprocessing as pre_processing import numpy as nplabel=pre_processing.LabelEncoder() labels=label.fit_transform(['中國','美國','法國','德國']) print(labels)labels的結果為:[0,3,2,1]
第二步:然后進行獨熱編碼,使用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()) #這里一定要進行toarray()結果為:
[[1. 0. 0. 0.]
[0. 0. 0. 1.]
[0. 0. 1. 0.]
[0. 1. 0. 0.]]
注意,上面的第二步也可以使用LabelBinarizer進行替代
onehot_label=pre_processing.LabelBinarizer().fit_transform(labels)
這里的參數labels就是【0,3,2,1】,不需要組織成(samples,features)的形式。
多項式特征
from sklearn.preprocessing import PolynomialFeatures # include polynomials up to x ** 10: poly = PolynomialFeatures(degree=10) poly.fit(X) X_poly = poly.transform(X)
電氣專業的計算機萌新:余登武。寫博文不容易。如果你覺得本文對你有用,請點個贊支持下,謝謝。
總結
以上是生活随笔為你收集整理的python sklearn学习笔记大全(常见代码速查)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql导入表格,txt操作(以及常见
- 下一篇: 凭证号数怎么填