模型儲存和載入
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總結
- 特點分析:採用迭代式演算法,直觀易懂並且非常實用
- 缺點:容易收斂到區域性最優解(多次聚類)
迴歸與聚類整體演算法總結