機器學習7-模型儲存&無監督學習

清風紫雪發表於2021-01-22

模型儲存和載入

sklearn模型的儲存和載入API

  • from sklearn.externals import joblib
    • 儲存:joblib.dump(rf, 'test.pkl')
    • 載入:estimator = joblib.load('test.pkl')

線性迴歸的模型儲存載入案例

def linear3():
    """
    嶺迴歸的優化方法對波士頓房價預測
    """
    #獲取資料
    boston=load_boston()
    #劃分資料集
    x_train,x_test,y_train,y_test=train_test_split(boston.data,boston.target,random_state=22)
    #標準化
    transfer=StandardScaler()
    x_train=transfer.fit_transform(x_train)
    x_test=transfer.transform(x_test)
    #預估器
    # estimator=Ridge(alpha=0.0001, max_iter=100000)
    # estimator.fit(x_train,y_train)

    #儲存模型
    # joblib.dump(estimator,"my_ridge.pkl")

    #載入模型
    estimator=joblib.load("my_ridge.pkl")

    #得出模型
    print("嶺迴歸-權重係數為:\n",estimator.coef_)
    print("嶺迴歸-偏置為:\n",estimator.intercept_ )

    #模型評估
    y_predict = estimator.predict(x_test)
    print("預測房價:\n", y_predict)
    error = mean_squared_error(y_test, y_predict)
    print("嶺迴歸-均方差誤差:\n", error)
    return None


if __name__ == '__main__':
    # linear1()
    # linear2()
    linear3()

儲存:儲存訓練完結束的模型

載入:載入已有的模型,去進行預測結果和之前的模型一樣

無監督學習-K-means演算法

K-means原理

我們先來看一下一個K-means的聚類效果圖

K-means聚類步驟

  • 隨機設定K個特徵空間內的點作為初始的聚類中心
  • 2、對於其他每個點計算到K箇中心的距離,未知的點選擇最近的一個聚類中心點作為標記類別
  • 3、接著對著標記的聚類中心之後,重新計算出每個聚類的新中心點(平均值)
  • 4、如果計算得出的新中心點與原中心點一樣,那麼結束,否則重新進行第二步過程

我們以一張圖來解釋效果

 

 

K-meansAPI

  • sklearn.cluster.KMeans(n_clusters=8,init=‘k-means++’)
    • k-means聚類
    • n_clusters:開始的聚類中心數量
    • init:初始化方法,預設為'k-means ++’
    • labels_:預設標記的型別,可以和真實值比較(不是值比較)

案例:k-means對Instacart Market使用者聚類

 

 如何評估聚類的效果?

Kmeans效能評估指標

輪廓係數

輪廓係數值分析

 

 

分析過程(我們以一個藍1點為例)

  • 1、計算出藍1離本身族群所有點的距離的平均值a_i

  • 2、藍1到其它兩個族群的距離計算出平均值紅平均,綠平均,取最小的那個距離作為b_i

  • 根據公式:極端值考慮:如果b_i >>a_i: 那麼公式結果趨近於1;如果a_i>>>b_i: 那麼公式結果趨近於-1

結論

如果b_i>>a_i:趨近於1效果越好, b_i<<a_i:趨近於-1,效果不好。輪廓係數的值是介於 [-1,1] ,越趨近於1代表內聚度和分離度都相對較優。

輪廓係數API

  • sklearn.metrics.silhouette_score(X, labels)
    • 計算所有樣本的平均輪廓係數
    • X:特徵值
    • labels:被聚類標記的目標值

案例-聚類評估

 

 

K-means總結

  • 特點分析:採用迭代式演算法,直觀易懂並且非常實用
  • 缺點:容易收斂到區域性最優解(多次聚類)

迴歸與聚類整體演算法總結

 

 

 

相關文章