首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

机器学习100天-Day4-6

基于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()

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181221A0FDV500?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券