100天机器学习(100-Days-Of-ML)day4,5,6提升版

本系列为100天机器学习学习笔记。详细请参考下方作者链接:
100天机器学习github:
https://github.com/MLEveryday/100-Days-Of-ML-Code

Day4,5,6–logistic regression

在这里插入图片描述
数据集 | 社交网络
在这里插入图片描述
该数据集包含了社交网络中用户的信息。这些信息涉及用户ID,性别,年龄以及预估薪资。一家汽车公司刚刚推出了他们新型的豪华SUV,我们尝试预测哪些用户会购买这种全新SUV。并且在最后一列用来表示用户是否购买。我们将建立一种模型来预测用户是否购买这种SUV,该模型基于两个变量,分别是年龄和预计薪资。因此我们的特征矩阵将是这两列。我们尝试寻找用户年龄与预估薪资之间的某种相关性,以及他是否购买SUV的决定。
接下来我会以和教程略有不同的方式解决这个问题。虽然略有改动,当然本质一样。在基础上做更多的分析。

步骤1 | 数据预处理
导入库

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

导入数据集

data = pd.read_csv("Social_Network_Ads.csv")
data[:10]

在这里插入图片描述

#将类别变量转为哑变量
data = pd.get_dummies(data,columns=["Gender"])
data.head()

在这里插入图片描述

#检查是否有nan值
data.isnull().sum()
User ID            0
Age                0
EstimatedSalary    0
Purchased          0
Gender_Female      0
Gender_Male        0
dtype: int64

将数据集分成训练集和测试集

from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
X = data[['Age','EstimatedSalary','Gender_Female','Gender_Male'
         ]]
ss =StandardScaler()
X =ss.fit_transform(X)
Y = data['Purchased']
X_train,X_test,Y_train,Y_test = train_test_split(X,Y,test_size=0.25,random_state=0)

步骤2 | 逻辑回归模型

该项工作的库将会是一个线性模型库,之所以被称为线性是因为逻辑回归是一个线性分类器,这意味着我们在二维空间中,我们两类用户(购买和不购买)将被一条直线分割。然后导入逻辑回归类。下一步我们将创建该类的对象,它将作为我们训练集的分类器。

将逻辑回归应用于训练集

from sklearn.linear_model import LogisticRegression
logistic = LogisticRegression()
logistic.fit(X_train,Y_train)
y_pred = logistic.predict(X_test)

步骤4 | 评估预测
我们预测了测试集。 现在我们将评估逻辑回归模型是否正确的学习和理解。因此这个混淆矩阵将包含我们模型的正确和错误的预测。
生成混淆矩阵

from sklearn import metrics
metrics.confusion_matrix(Y_test,y_pred)
array([[65,  3],
       [ 6, 26]])
#准确率
metrics.accuracy_score(Y_test,y_pred)

0.91
在这里插入图片描述
注意:
这里必须做特征缩放staandardscaler。因为不同feature量级相差很大。如不做特征缩放,那么预测值会如何你们可以自己做一下试试看,并看一下权重就知道原因了。
在这里插入图片描述
关于混淆矩阵:
建议:
在这里插入图片描述
先写true值,再写pred值。这样生成的混淆矩阵才是我们常见的类型。

扫描二维码关注公众号,回复: 4983445 查看本文章

猜你喜欢

转载自blog.csdn.net/ssswill/article/details/86312410
今日推荐