Skip to content

Commit 438e96c

Browse files
committed
逻辑回归
1 parent 75eb351 commit 438e96c

3 files changed

Lines changed: 81 additions & 0 deletions

File tree

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
from sklearn.linear_model import LogisticRegression
2+
from sklearn.preprocessing import StandardScaler
3+
from sklearn.cross_validation import train_test_split
4+
import numpy as np
5+
6+
def logisticRegression():
7+
data = loadtxtAndcsv_data("data1.txt", ",", np.float64)
8+
X = data[:,0:-1]
9+
y = data[:,-1]
10+
11+
# 划分为训练集和测试集
12+
x_train,x_test,y_train,y_test = train_test_split(X,y,test_size=0.2)
13+
14+
# 归一化
15+
scaler = StandardScaler()
16+
scaler.fit(x_train)
17+
x_train = scaler.fit_transform(x_train)
18+
x_test = scaler.fit_transform(x_test)
19+
20+
#逻辑回归
21+
model = LogisticRegression()
22+
model.fit(x_train,y_train)
23+
24+
# 预测
25+
predict = model.predict(x_test)
26+
right = sum(predict == y_test)
27+
28+
predict = np.hstack((predict.reshape(-1,1),y_test.reshape(-1,1))) # 将预测值和真实值放在一块,好观察
29+
print predict
30+
print ('测试集准确率:%f%%'%(right*100.0/predict.shape[0])) #计算在测试集上的准确度
31+
32+
# 加载txt和csv文件
33+
def loadtxtAndcsv_data(fileName,split,dataType):
34+
return np.loadtxt(fileName,delimiter=split,dtype=dataType)
35+
36+
# 加载npy文件
37+
def loadnpy_data(fileName):
38+
return np.load(fileName)
39+
40+
41+
42+
if __name__ == "__main__":
43+
logisticRegression()

formula/LogisticRegression_01.wmf

18.1 KB
Binary file not shown.

readme.md

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -217,6 +217,44 @@ def mapFeature(X1,X2):
217217
![enter description here][7]
218218
![enter description here][8]
219219

220+
### 8、[使用scikit-learn库中的逻辑回归模型实现](/LogisticRegression/LogisticRegression_scikit-learn.py)
221+
- 导入包
222+
```
223+
from sklearn.linear_model import LogisticRegression
224+
from sklearn.preprocessing import StandardScaler
225+
from sklearn.cross_validation import train_test_split
226+
import numpy as np
227+
```
228+
- 划分训练集和测试集
229+
```
230+
# 划分为训练集和测试集
231+
x_train,x_test,y_train,y_test = train_test_split(X,y,test_size=0.2)
232+
```
233+
- 归一化
234+
```
235+
# 归一化
236+
scaler = StandardScaler()
237+
scaler.fit(x_train)
238+
x_train = scaler.fit_transform(x_train)
239+
x_test = scaler.fit_transform(x_test)
240+
```
241+
- 逻辑回归
242+
```
243+
#逻辑回归
244+
model = LogisticRegression()
245+
model.fit(x_train,y_train)
246+
```
247+
- 预测
248+
```
249+
# 预测
250+
predict = model.predict(x_test)
251+
right = sum(predict == y_test)
252+
253+
predict = np.hstack((predict.reshape(-1,1),y_test.reshape(-1,1))) # 将预测值和真实值放在一块,好观察
254+
print predict
255+
print ('测试集准确率:%f%%'%(right*100.0/predict.shape[0])) #计算在测试集上的准确度
256+
```
257+
220258

221259
[1]: ./images/LinearRegression_01.png "LinearRegression_01.png"
222260
[2]: ./images/LogisticRegression_01.png "LogisticRegression_01.png"

0 commit comments

Comments
 (0)