close

Python很吃版本,我使用的版本如下:

Python 3.10

sklearn 1.2.1

以下介紹使用scikit-learn使用羅吉斯回歸(logistic regression)進行訓練與預測的方式,總共分成四大步驟:

  1. 建立資料
  2. 進行訓練
  3. 進行驗證
  4. 進行預測

最後提供完整程式碼

 

羅吉斯回歸是分類器,跟回歸不一樣,雖然它名字有回歸的字眼。既然是分類器,我們就選用sklearn裡面提供的資料來進行展示。

 

步驟一: 建立資料

#建立資料
from sklearn import datasets
from sklearn.model_selection import train_test_split
#使用鳶尾花資料集
iris = datasets.load_iris()
x = iris.data
y= iris.target

print("鳶尾花第1筆資料: ",x[0])

#拆訓練資料與測試資料
xTrain, xTest, yTrain, yTest = train_test_split(x,y,test_size=0.2,random_state=0)

test_size=0.2 就是測試資料比例為20%random_state=0代表每次都用同一筆資料,不會隨機選

 

步驟二: 進行訓練

#模型訓練
from sklearn.linear_model import LogisticRegression
#logistic regression預設的solverlbfgs(Limited-memory Broyden–Fletcher–Goldfarb–Shanno Algorithm), 最多訓練迭代次數預設100 (max_iter)
logisticModel = LogisticRegression(solver='lbfgs', max_iter=200);
logisticModel.fit(xTrain,yTrain);

因為我使用max_iter=100時出現錯誤,錯誤是跟我說無法收斂,所以我這邊調成200,就可以正確訓練

 

步驟三:進行驗證與進行預測

#預測結果
predictedAnswer = logisticModel.predict(xTest);
print("預測結果: ",predictedAnswer);

#準確度分析
print("訓練資料準確度:",logisticModel.score(xTrain,yTrain));
print("測試資料準確度:",logisticModel.score(xTest,yTest));

 

結果如下:

圖片1.png

 

以上就是羅吉斯回歸的步驟,完整程式碼如下:

#建立資料
from sklearn import datasets
from sklearn.model_selection import train_test_split
#使用鳶尾花資料集
iris = datasets.load_iris()
x = iris.data
y= iris.target


#拆訓練資料與測試資料
xTrain, xTest, yTrain, yTest = train_test_split(x,y,test_size=0.2,random_state=0)

#模型訓練
from sklearn.linear_model import LogisticRegression
#logistic regression預設的solverlbfgs(Limited-memory Broyden–Fletcher–Goldfarb–Shanno Algorithm), 最多訓練迭代次數預設100 (max_iter)
logisticModel = LogisticRegression(solver='lbfgs', max_iter=200);
logisticModel.fit(xTrain,yTrain);


#預測結果
predictedAnswer = logisticModel.predict(xTest);
print("預測結果: ",predictedAnswer);

#準確度分析
print("訓練資料準確度:",logisticModel.score(xTrain,yTrain));
print("測試資料準確度:",logisticModel.score(xTest,yTest));

如有任何問題歡迎留言交流

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 葛瑞斯肯 的頭像
    葛瑞斯肯

    葛瑞斯肯樂活筆記

    葛瑞斯肯 發表在 痞客邦 留言(0) 人氣()