天天看點

python 邏輯回歸分類_機器學習-邏輯回歸分類

分類問題: 1) 本質:決策面(decision surface)2)評估分類算法的名額,正确率=正确分類個數/總數

二分分類:邏輯回歸輸入:訓練資料的特征和标簽--->>>模型:邏輯回歸---->>>輸出:分類結果

什麼是邏輯函數?

在0到1之間取值,邏輯回歸是因為參數是邏輯函數

邏輯的數值:表示分類結果是1是Y的結果

決策面:大于等于0.5 或 小于0.5

3.Python的邏輯回歸分類做法建立資料集

from collections import OrderedDict

import pandas as pd

#資料集

examDict={

'學習時間':[0.50,0.75,1.00,1.25,1.50,1.75,1.75,2.00,2.25,2.50,

2.75,3.00,3.25,3.50,4.00,4.25,4.50,4.75,5.00,5.50],

'通過考試':[0,0,0,0,0,0,1,0,1,0,1,0,1,0,1,1,1,1,1,1]

}

examOrderDict=OrderedDict(examDict)

examdf=pd.DataFrame(examOrderDict)

examdf.head()from collections import OrderedDict

import pandas as pd提取特征和标簽

#特征features

exam_x=examdf.loc[:,'學習時間']

#标簽labels

exam_y=examdf.loc[:,'通過考試']繪制散點圖

import matplotlib.pyplot as plt

#散點圖

plt.scatter(exam_x,exam_y,color="b", label="exam data")

#添加圖示标簽

plt.xlabel("Hours")

plt.ylabel("Pass")

#顯示圖像

plt.show()

建立訓練資料集和測試資料集

from sklearn.model_selection import train_test_split

#建立訓練資料和測試資料

x_train, x_test,y_train, y_test=train_test_split(exam_x,

exam_y,

train_size=.8)

#輸出資料大小

print('原始資料特征:',exam_x.shape ,

',訓練資料特征:', x_train.shape ,

',測試資料特征:',x_test.shape )

print('原始資料标簽:',exam_y.shape ,

'訓練資料标簽:', y_train.shape ,

'測試資料标簽:' ,y_test.shape)

Output:

原始資料特征: (20,) ,訓練資料特征: (16,) ,測試資料特征: (4,)

原始資料标簽: (20,) 訓練資料标簽: (16,) 測試資料标簽: (4,)

#繪制散點圖

import matplotlib.pyplot as plt

#散點圖

plt.scatter(x_train, y_train, color="blue",label="train data")

plt.scatter(x_test, y_test, color="red",label="test data")

#添加圖示标簽

plt.legend(loc=2)

plt.xlabel("Hours")

plt.ylabel("Pass")

#顯示圖像

plt.show()評估模型(用測試資料)

#評估模型:準确率

model.score(x_test,y_test)

0.75邏輯函數

#擷取機率值

#第1個值是标簽為0的機率值,第2個值是标簽為1的機率值

model.predict_proba(4)

array([[0.27173471, 0.72826529]])

#預測資料:使用模型的predict方法可以進行預測。

我們輸入學生的特征學習時間4小時,模型傳回結果标簽是1,就代表預測該學生未通過考試。

pred=model.predict([[4]])

print(pred)

[1]這個預測值是如何得到的?運用邏輯回歸函數展示一下

import numpy as np

#第1步:得到回歸方程的z值(假設我們X=4,即4個小時)

#回歸方程:z= + x

#截距

a=model.intercept_

#回歸系數

b=model.coef_

x=4

z=a+b*x

#第2步:将z值帶入邏輯回歸函數中,得到機率值(預測是1的機率)

y_pred=1/(1+np.exp(-z))

print('預測的機率值:',y_pred)

預測的機率值: [[0.72826529]]

與之前的預測機率值是吻合的!

4.分類和回歸有什麼差別?

首先要有3種資料類型

1.數值資料(定量資料)--離散資料,連續資料

2.分類資料(定性資料)

3.時間序列資料

5. 總結