100-Days-Of-ML-Code(Day4/5/6--LogisticRegression)

#!---* coding: utf-8 --*--
#!/usr/bin/python
"""
ProjectName:LogisticRegression
@Author:Aifu Han
Date:2018.8.11
"""
#step1:数据预处理
import numpy as np
import pandas as pd
import  matplotlib.pyplot as plt
#导入数据
dataset = pd.read_csv('./Social_Network_Ads.csv')
X = dataset.iloc[:, [2, 3]].values
Y = dataset.iloc[:, 4].values
#特征缩放
from sklearn.preprocessing import StandardScaler
sc_X = StandardScaler()

X = sc_X.fit_transform(X)
#将数据分为训练集和测试集
from sklearn.model_selection import train_test_split
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.25, random_state=0)

#step2:训练集上训练模型
from sklearn.linear_model import LogisticRegression
classifier = LogisticRegression()
classifier = classifier.fit(X_train,Y_train)

#step3:模型的预测
Y_pred = classifier.predict(X_test)
print(Y_pred)

#step4:画图
from matplotlib.colors import ListedColormap
X_set,y_set=X_train,Y_train
X1,X2=np. meshgrid(np. arange(start=X_set[:,0].min()-1, stop=X_set[:, 0].max()+1, step=0.01),
                   np. arange(start=X_set[:,1].min()-1, stop=X_set[:,1].max()+1, step=0.01))

plt.contourf(X1, X2, classifier.predict(np.array([X1.ravel(),X2.ravel()]).T).reshape(X1.shape),
             alpha = 0.75, cmap = ListedColormap(('red', 'green')))
plt.xlim(X1.min(),X1.max())
plt.ylim(X2.min(),X2.max())
for i,j in enumerate(np. unique(y_set)):
    plt.scatter(X_set[y_set==j,0],X_set[y_set==j,1],
                c = ListedColormap(('red', 'green'))(i), label=j)

plt. title(' LOGISTIC(Training set)')
plt. xlabel(' Age')
plt. ylabel(' Estimated Salary')
plt. legend()
plt. show()

from matplotlib.colors import ListedColormap
X_set,y_set=X_test,Y_test
X1,X2=np. meshgrid(np. arange(start=X_set[:,0].min()-1, stop=X_set[:, 0].max()+1, step=0.01),
                   np. arange(start=X_set[:,1].min()-1, stop=X_set[:,1].max()+1, step=0.01))

plt.contourf(X1, X2, classifier.predict(np.array([X1.ravel(),X2.ravel()]).T).reshape(X1.shape),
             alpha = 0.75, cmap = ListedColormap(('red', 'green')))
plt.xlim(X1.min(),X1.max())
plt.ylim(X2.min(),X2.max())
for i,j in enumerate(np. unique(y_set)):
    plt.scatter(X_set[y_set==j,0],X_set[y_set==j,1],
                c = ListedColormap(('red', 'green'))(i), label=j)

plt. title(' LOGISTIC(Test set)')
plt. xlabel(' Age')
plt. ylabel(' Estimated Salary')
plt. legend()
plt. show()

#另一种方式画逻辑回归二分类图
#先显示训练集的散点图
plt.figure(figsize=(10,6))
plt.scatter(X_train[Y_train==0][:, 0],X_train[Y_train==0][:,1],color='b',label='0')
plt.scatter(X_train[Y_train==1][:, 0],X_train[Y_train==1][:,1],color='r',label='1')
plt.legend()
x1_min, xl_max=X_train[:,0].min(), X_train[:,0].max()
x2_min, x2_max=X_train[:,1].min(), X_train[:,1].max()
xx1, xx2=np.meshgrid(np.linspace(x1_min, xl_max), np.linspace(x2_min,x2_max))
grid=np.c_[ xx1.ravel(), xx2.ravel()]
probs=classifier.predict(grid).reshape(xx1.shape)

plt.contour(xx1, xx2, probs, [0.5], linewidths = 1, colors = 'black')
plt.show()

#再显示测试集的散点图
plt.figure(figsize=(10,6))
plt.scatter(X_test[Y_pred==0][:, 0],X_test[Y_pred==0][:,1],color='b',label='0')
plt.scatter(X_test[Y_pred==1][:, 0],X_test[Y_pred==1][:,1],color='r',label='1')
plt. legend()
x3_min, x3_max=X_test[:,0].min(), X_test[:,0].max()
x4_min, x4_max=X_test[:,1].min(), X_test[:,1].max()
xx3, xx4=np.meshgrid(np.linspace(x3_min, x3_max), np.linspace(x4_min,x4_max))
grid1=np.c_[ xx3.ravel(), xx4.ravel()]
probs1=classifier.predict(grid).reshape(xx3.shape)

plt.contour(xx3, xx4, probs1, [0.5], linewidths = 1, colors = 'black')
plt.show()

输出的预测结果y_pred为:

图像采用了两种方式来显示:

另外一种形式的:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hanaif

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值