基于github上的一个学习项目进行https://github.com/Avik-Jain/100-Days-Of-ML-Code
由浅入深,省去前期手工推导,练习中引入库来完成。
一般一天更新一次练习,我会将里面的英文引导翻译成中文。
昨天做citespace视频,没有更新,今天的很有意思,逻辑回归函数,同时还有绘图操作,有部分做了标注。记得之前学吴恩达教程的时候手写逻辑回归反向传播理解得很困难。接下来两天要基于之前的线性回归和逻辑回归,看一下其中参数设定问题。
原文的英文说明
逻辑回归(Logistic Regression)
什么是逻辑回归
逻辑回归被用于对不同问题进行分类。在这里,逻辑回归的目标是用于对观测数据进行分类预测。逻辑回归给出一个介于0和1之间离散的二元结果。例如,一个人是否会对选举进行投票。
如何工作
逻辑回归通过使用相关逻辑方法评估可能性来计算因变量(我们的标签,我们希望进行预测的)与一个或多个自变量(我们的特征)之间的关系。即是说,因变量是希望预测的结果,自变量是特征
逻辑Vs线性
逻辑回归给予你一个离散结果,而线性回归给出的连续结果。
Sigmoid方法
Sigmoid方法是一个S型曲线,它能够将实值放置在一个介于0和1之间的区间,但不会达到极限。
本次使用的数据结构和需求
excel表中数据包含了社交网络使用者的信息。一家公司希望投放SUV。我们试图找出哪些用户是潜在购买对象。数据最后一列为用户是否购买,根据数据构建模型。
模型构建基于两个变量:年龄和工资,所以矩阵特征只需要获取这两列即可。
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
data=pd.read_excel(r'.socialnetwork_ads.xlsx')
X=data.iloc[:,[2,3]].values #获取年龄和工资列
Y=data.iloc[:,4].values #获取最后一列验证
预测数据
在这里引入的是逻辑回归函数,同样fit()、predict()之后完成
from sklearn.linear_model import LogisticRegression
classfier=LogisticRegression()
classfier.fit(X_train,y_train)
y_pred=classfier.predict(X_test)
评估预测结果
使用metrics中的confusion_matrix混淆矩阵方法。
from sklearn.metrics import confusion_matrix
cm=confusion_matrix(y_test,y_pred)
数据可视化·感谢MLEveryday,这是从他那里抄来的,原版没有这部分
from matplotlib.colors import ListedColormap
X_set, y_set=X_train,y_train
#meshgrid生成网格函数
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(('green', 'red')))
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(('green', 'red'))(i), label=j)
plt.title('Training Set')
plt.xlabel('Age')
plt.ylabel('Salary')
plt.legend()
plt.show()
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(('green', 'red')))
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(('green', 'red'))(i), label=j)
plt.title('Training Set')
plt.xlabel('Age')
plt.ylabel('Salary')
plt.legend()
plt.show()
领取专属 10元无门槛券
私享最新 技术干货