[toc]html
雖然數據分析,數據挖掘,一說預測看起來高大上,可是實際上是有套路的,預測的代碼大體都長下面這個樣子算法
# 1.選擇算法模型 model=new 算法模型() # 2.開始訓練(傳入訓練集特徵train_x和訓練集結果train_y) model.fit(train_x, train_y) # 3.預測結果(傳入測試集test_x) prediction=model.predic(測試集test_x) # 4.計算準確率(對比預測結果prediction和測試集真實結果test_y) 準確率=metrics.accuracy_score(prediction, test_y)
套路說明:dom
上面這些只是招式,其實內功都在模型上,那咱們怎麼判斷內功比較厲害呢?函數
模型就是內功,內功厲不厲害主要看下面這些指標,內功越強,預測的越準測試
準確率:accuracy 大部分狀況,咱們均可以使用預測的數據和真實的數據,挨個比對來得到準確率
對於正例比例極低的狀況,好比spa
信用卡欺詐 某些疾病的識別 恐怖分子的判斷
這種獲取的是佔很小的一部分,就須要用精確率-召回率
來進行統計rest
精確率(Precision):檢索出來的正確條目數佔檢索出來的總條目數的多少,衡量的是查準率; 召回率(Recall):檢索出的正確的條目佔所有正確條目數的多少,衡量的是查全率 好比,推薦系統根據你的喜愛,推薦了10個商品,其中真正相關的是5個商品,在全部的商品庫中,相關的商品一共有20個,則精確率 = 5/10,召回率 = 5/20code
舉個例子: 從一個大米和小麥混合的袋子裏,抓一把大米,咱們確定但願抓出來的大米越多越好(精確率高),而後咱們還但願就是但願一把抓出來的是全部的大米(召回率高),簡單的說就是一個找的對,一個找的全。orm
關於模型的原理,能夠查看從小白視角理解<數據挖掘十大算法>htm
咱們已經有了數據,須要將數據分紅兩部分:訓練集和測試集 好比能夠8成用來訓練,2成用來測試結果,sklearn提供了train_test_split stratify函數,能夠很是方便的爲咱們分割數據。 train_test_split 能夠幫助咱們把數據集抽取一部分做爲測試集,這樣咱們就能夠獲得訓練集和測試集。
參數
train_data:所要劃分的樣本特徵集 train_target:須要劃分的樣本結果 test_size / train_size: 測試集/訓練集的大小,若輸入小數表示比例,若輸入整數表示數據個數。 random_state:隨機數種子,若是須要重複試驗,能夠指定非0值,將保證獲得一組同樣的隨機數 shuffle:是否打亂數據的順序,再劃分,默認True。 stratify:none或者array/series類型的數據,表示按這列進行分層採樣。
GridSearchCV是參數自動搜索模塊,只須要傳入須要要調優的參數及參數的取值範圍,它會把全部的參數都執行一遍,而後找出最優的,本質是一種窮舉法
from sklearn.model_selection import GridSearchCV # 初始化算法模型 model=算法模型() # 設置參數值取值範圍 params={"n_estimators": range(1,11)} # 使用GriSearchCV找出最優參數 clf=GridSearchCV(estimator=model, param_grid=params) # 執行訓練 clf.fit(iris.data, iris.target) # 獲得最優分數和最優參數 print("最優分數: %.4lf" %clf.best_score_) print("最優參數:", clf.best_params_)
StandardScaler 能夠採用Z-Score規範化數據,獲得數據規範化爲均值爲 0,方差爲1的正態分佈
train_x = StandardScaler().fit_transform(train_x)
Python 有一種 Pipeline 管道機制。管道機制就是讓咱們把每一步都按順序列下來,從而建立 Pipeline 流水線做業。每一步都採用 (‘名稱’, 步驟) 的方式來表示。 好比咱們能夠把數據規範化->搜索最優的參數
合成一步,寫到一個Pipline中
rf = RandomForestClassifier() parameters = {"randomforestclassifier__n_estimators": range(1,11)} iris = load_iris() pipeline = Pipeline([ ('scaler', StandardScaler()), ('randomforestclassifier', rf) ]) # 使用GridSearchCV進行參數調優 clf = GridSearchCV(estimator=pipeline, param_grid=parameters) # 對iris數據集進行分類 clf.fit(iris.data, iris.target) print("最優分數: %.4lf" %clf.best_score_) print("最優參數:", clf.best_params_)
原文出處:https://www.cnblogs.com/chenqionghe/p/12322825.html