日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python sklearn学习笔记大全(常见代码速查)

發布時間:2024/9/30 python 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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)

評價函數

分類
準確率

import numpy as np from sklearn.metrics import accuracy_score y_pred = [0, 2, 1, 3] y_true = [0, 1, 2, 3] accuracy_score(y_true, y_pred) 0.5 accuracy_score(y_true, y_pred, normalize=False) 2

混淆矩陣

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 classification_report >>> y_true = [0, 1, 2, 2, 0] >>> y_pred = [0, 0, 2, 2, 0] >>> target_names = ['class 0', 'class 1', 'class 2'] >>> print(classification_report(y_true, y_pred, target_names=target_names))precision recall f1-score supportclass 0 0.67 1.00 0.80 2class 1 0.00 0.00 0.00 1class 2 1.00 1.00 1.00 2avg / total 0.67 0.80 0.72 5

回歸

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

聚類

  • 輪廓系數(Silhouette Coefficient)
    函數:
    def silhouette_score(X, labels, metric=‘euclidean’, sample_size=None,
    random_state=None, **kwds):
  • 函數值說明:
    所有樣本的s i 的均值稱為聚類結果的輪廓系數,定義為S,是該聚類是否合理、有效的度量。聚類結果的輪廓系數的取值在【-1,1】之間,值越大,說明同類樣本相距約近,不同樣本相距越遠,則聚類效果越好。

    >>> import numpy as np >>> from sklearn.cluster import KMeans >>> kmeans_model = KMeans(n_clusters=3, random_state=1).fit(X) >>> labels = kmeans_model.labels_ >>> metrics.silhouette_score(X, labels, metric='euclidean') ... 0.55...
  • CH分數(Calinski Harabasz Score )
    函數:
    def calinski_harabasz_score(X, labels):
    函數值說明:
    類別內部數據的協方差越小越好,類別之間的協方差越大越好,這樣的Calinski-Harabasz分數會高。 總結起來一句話:CH index的數值越大越好。
  • >>> import numpy as np >>> from sklearn.cluster import KMeans >>> kmeans_model = KMeans(n_clusters=3, random_state=1).fit(X) >>> labels = kmeans_model.labels_ >>> metrics.calinski_harabaz_score(X, labels) 560.39...

    交叉驗證

    將原始數據分成K組(一般是均分),將每個子集數據分別做一次驗證集,其余的K-1組子集數據作為訓練集,這樣會得到K個模型,用這K個模型最終的驗證集的分類準確率的平均數作為此K-CV下分類器的性能指標。K一般大于等于2,實際操作時一般從3開始取,只有在原始數據集合數據量小的時候才會嘗試取2。K-CV可以有效的避免過學習以及欠學習狀態的發生,最后得到的結果也比較具有說服性。

    from sklearn.model_selection import cross_val_score from sklearn import datasets data=datasets.load_iris() X=data.data y=data.target knn = KNeighborsClassifier(n_neighbors=5) score = cross_val_score(knn,X,y,cv=5,scoring='accuracy') print(score) print(score.mean())

    網格搜索

    GridSearchCV,它存在的意義就是自動調參,只要把參數輸進去,就能給出最優化的結果和參數。但是這個方法適合于小數據集,一旦數據的量級上去了,很難得出結果。這個時候就是需要動腦筋了。數據量比較大的時候可以使用一個快速調優的方法——坐標下降。它其實是一種貪心算法:拿當前對模型影響最大的參數調優,直到最優化;再拿下一個影響最大的參數調優,如此下去,直到所有的參數調整完畢。這個方法的缺點就是可能會調到局部最優而不是全局最優,但是省時間省力,巨大的優勢面前,還是試一試吧,后續可以再拿bagging再優化。
    grid.fit():運行網格搜索
    best_params_:描述了已取得最佳結果的參數的組合
    best_score_:成員提供優化過程期間觀察到的最好的評分

    from sklearn.datasets import load_iris from sklearn.neighbors import KNeighborsClassifier import matplotlib.pyplot as plt from sklearn.model_selection import GridSearchCV iris = load_iris() X = iris.data y = iris.target k_range = range(1,31) weights = ['uniform', 'distance'] # param_gird = dict(n_neighbors=k_range,weights=weights)knn = KNeighborsClassifier(n_neighbors=5)#現在是一個參數進行網格搜索grid = GridSearchCV(knn,param_gird,cv=10,scoring='accuracy') grid.fit(X,y) print(grid.best_score_) print(grid.best_params_)

    歸一化和標準化

    歸一化

    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学习笔记大全(常见代码速查)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。