本文實例講述了Python實現的邏輯回歸算法。分享給大家供大家參考,具體如下:
使用python實現邏輯回歸
Using Python to Implement Logistic Regression Algorithm
菜鳥寫的邏輯回歸,記錄一下學習過程
代碼:
#encoding:utf-8
"""
Author: njulpy
Version: 1.0
Data: 2018/04/10
Project: Using Python to Implement LogisticRegression Algorithm
"""
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
#建立sigmoid函數
def sigmoid(x):
x = x.astype(float)
return 1./(1+np.exp(-x))
#訓練模型,采用梯度下降算法
def train(x_train,y_train,num,alpha,m,n):
beta = np.ones(n)
for i in range(num):
h=sigmoid(np.dot(x_train,beta)) #計算預測值
error = h-y_train.T #計算預測值與訓練集的差值
delt=alpha*(np.dot(error,x_train))/m #計算參數的梯度變化值
beta = beta - delt
#print('error',error)
return beta
def predict(x_test,beta):
y_predict=np.zeros(len(y_test))+0.5
s=sigmoid(np.dot(beta,x_test.T))
y_predict[s < 0.34] = 0
y_predict[s > 0.67] = 1
return y_predict
def accurancy(y_predict,y_test):
acc=1-np.sum(np.absolute(y_predict-y_test))/len(y_test)
return acc
if __name__ == "__main__":
data = pd.read_csv('iris.csv')
x = data.iloc[:,1:5]
y = data.iloc[:,5].copy()
y.loc[y== 'setosa'] = 0
y.loc[y== 'versicolor'] = 0.5
y.loc[y== 'virginica'] = 1
x_train,x_test,y_train,y_test = train_test_split(x,y,test_size=0.3,random_state=15)
m,n=np.shape(x_train)
alpha = 0.01
beta=train(x_train,y_train,1000,alpha,m,n)
pre=predict(x_test,beta)
t = np.arange(len(x_test))
plt.figure()
p1 = plt.plot(t,pre)
p2 = plt.plot(t,y_test,label='test')
label = ['prediction', 'true']
plt.legend(label, loc=1)
plt.show()
acc=accurancy(pre,y_test)
print('The predicted value is ',pre)
print('The true value is ',np.array(y_test))
print('The accuracy rate is ',acc)
輸出結果:
The predicted value is [ 0. 0.5 1. 0. 0. 1. 1. 0.5 1. 1. 1. 0.5 0.5 0.5 1.
0. 0.5 1. 0. 1. 0.5 0. 0.5 0.5 0. 0. 1. 1. 1. 1.
0. 1. 1. 1. 0. 0. 1. 0. 0. 0.5 1. 0. 0. 0.5 1. ]
The true value is [0 0.5 0.5 0 0 0.5 1 0.5 0.5 1 1 0.5 0.5 0.5 1 0 0.5 1 0 1 0.5 0 0.5 0.5 0
0 1 1 1 0.5 0 1 0.5 1 0 0 1 0 0 0.5 1 0 0 0.5 1]
The accuracy rate is 0.9444444444444444

附:上述示例中的iris.csv文件點擊此處本站下載。
更多關于Python相關內容感興趣的讀者可查看本站專題:《Python數學運算技巧總結》、《Python數據結構與算法教程》、《Python函數使用技巧總結》、《Python字符串操作技巧匯總》及《Python入門與進階經典教程》
希望本文所述對大家Python程序設計有所幫助。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。