scikit learn的常用函式

2021-09-29 14:08:20 字數 3403 閱讀 7120

import pandas

import numpy

# read the data

data = pandas.read_csv(

'data.csv'

)# split the data into x and y

x = numpy.array(data[

['x1'

,'x2']]

)y = numpy.array(data[

'y']

)

# import statements for the classification algorithms

from sklearn.linear_model import logisticregression

from sklearn.tree import decisiontreeclassifier

from sklearn.svm import svc

# logistic regression classifier(邏輯回歸)

classifier = logisticregression(

)classifier.fit(x,y)

# decision tree classifier(決策樹)

classifier = decisiontreeclassifier(

)classifier.fit(x,y)

# support vector machine classifier(svm)

classifier = svc(

)classifier.fit(x,y)

from sklearn.model_selection import train_test_split

x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=

0.1)

#測試集佔10%

準確率
from sklearn.metrics import accuracy_score

accuracy = accuracy_score(y_true, y_pred)

絕對值誤差
from sklearn.metrics import mean_absolute_error

from sklearn.linear_model import linearregression

classifier = linearregression(

)classifier.fit(x, y)

pred = classifier.predict(x)

error = mean_absolute_error(y, pred)

均方誤差
from sklearn.metrics import mean_squared_error

from sklearn.linear_model import linearregression

classifier = linearregression(

)classifier.fit(x, y)

pred = classifier.predict(x)

error = mean_squared_error(y, pred)

r2 score
from sklearn.metrics import r2_score

from sklearn.linear_model import linearregression

classifier = linearregression(

)classifier.fit(x, y)

pred = classifier.predict(x)

score = r2_score(y, pred)

由於將資料集分為訓練集和測試集,測試集的資料不會參入訓練,會造成資料浪費,k折交叉驗證就是為了充分利用資料。

k折交叉驗證方法將資料集分成k份,其中k-1份用做訓練集,剩下的1份作為驗證集,以這種方式執行k輪,得到k個模型評測結果.對k次的評估結果取平均,作為該模型的整體效能.(k一般取值為5或者10)。

from sklearn.model_selection import kfold

kf = kfold(n_splits=

4, shuffle=

true

)x =[1

,2,3

,4,5

,6,7

,8]y =[0

,0,1

,0,1

,0,0

,1]for train_indices, test_indices in kf.split(x, y)

:print

(train_indices, test_indices)

[1 3 4 5 6 7] [0 2]

[0 1 2 5 6 7] [3 4]

[0 1 2 3 4 7] [5 6]

[0 2 3 4 5 6] [1 7]

注:kf.split()得到的是資料的序號。

網路搜尋即在那些用不同的超引數訓練的模型中找出在驗證集表現最好的模型

from sklearn.model_selection import gridsearchcv

from sklearn.svm import svc

#選擇模型,這裡採用svc(support vector classification就是支援向量機用於分類)

model = svc(

)#選擇超引數;鍵是引數的名稱,值是每個引數可能值的列表

parameters =

#建立乙個評分機制

from sklearn.metrics import make_scorer

from sklearn.metrics import f1_score

scorer = make_scorer(f1_score)

#建立交叉驗證集

from sklearn.model_selection import kfold

kf = kfold(n_splits=

4, shuffle=

true

)#使用引數和評分機制建立乙個 gridsearch 物件

grid_obj = gridsearchcv(model, parameters, scoring=scorer, cv=kfold)

grid_fit = grid_obj.fit(x, y)

#獲得最佳模型

best_model = grid_fit.best_estimator_

Scikit learn 庫的使用

1.與文字處理相關的庫 1.對語料庫提取特徵詞集合 from sklearn.feature extraction.text import tfidfvectorizer,countvectorizer 下面的語句初始化 tfidfvectorizer 物件,傳入引數有 max df df比率大於其...

python常用函式 enumerate函式

1 如果對乙個列表,既要遍歷索引又要遍歷元素時,首先可以這樣寫 list1 這 是 乙個 測試 for i in range len list1 print i list1 i 2 上述方法有些累贅,利用enumerate 會更加直接和優美 list1 這 是 乙個 測試 for index,ite...

Dart Flutter開發中的幾個常用函式

幾個flutter開發中的常用函式 返回當前時間戳 static intcurrenttimemillis 複製到剪粘板 static copytoclipboard final string text static const rollupsize units gb mb kb b 返回檔案大小字...