




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据探查数据可视化数据转换回归模型训练数据预测线性回归和逻辑回归预测参考书目《机器学习技术任务驱动式教程》模块4机器学习技术目录波士顿房价预测糖尿病病期预测汽车购买预测小结习题四线性回归和逻辑回归预测第
4章机器学习技术数据housing.data记录了共计506条波士顿郊区的住房价值及其13个影响因素的信息。详细的字段描述见下表。1.1任务描述1波士顿房价预测字段字段类型允许为空标签?例子城镇人均犯罪率float否否0.00632住宅用地所占比例float否否18.0城镇中非住宅用地所占比例float否否2.31虚拟变量,用于回归分析int否否0环保指数float否否0.538每栋住宅的房间数float否否6.5751940年以前建成的自住单位的比例float否否65.21.1任务描述字段字段类型允许为空标签?例子距离5个波士顿的就业中心的加权距离float否否4.0900距离高速公路的便利指数int否否1每一万美元的不动产税率float否否296.0城镇中的教师学生比例float否否15.3城镇中的黑人比例float否否396.90地区中有多少房东属于低收入人群float否否4.98自住房屋房价中位数(也就是均价)float否是24.0接上1波士顿房价预测1.1任务描述1)通过自住房屋城镇人均犯罪率(如0.00632)、住宅用地所占比例(如18.0)、城镇中非住宅用地所占比例(如2.31)等13个属性值,预测该自住房屋的均价。2)通过拟合度指标R2评价回归模型的拟合效果。任务目标1波士顿房价预测1.2
任务分解import方式引入依赖的模块可视化样本的空间分布、待测试样本和训练样本的空间关系依赖库导入数据探查数据可视化从探查数据内容开始,经过分析数据分布,使用逻辑回归模型找到标签和数据特征之间的关系,然后利用线性回归模型测试数据,通过模型拟合度R2评价模型。1波士顿房价预测检查样本分布、特征/标签类型、空值、重复行、属性相互关系1.2
任务分解转换Pandas类型到Numpy类型在已知样本上训练回归模型通过相关系数找到关系不明显的特征后删除,提高线性回归模型的预测准确率数据转换模型训练降维接上模型评估1波士顿房价预测根据测试集预测得到的label,跟真实label比较,计算预测准确率1.3
任务实施1.3.1依赖库导入步骤1:定义2级标题。##<fontcolor="black">依赖库导入</font>按“SHIFT+Enter”,运行结果如下:1波士顿房价预测1.3
任务实施步骤2:导入依赖库。importpandasaspdimportmatplotlibasmplimportmatplotlib.pyplotaspltfromsklearnimportmodel_selectionfromsklearn.linear_modelimportLinearRegression按“SHIFT+Enter”,检查输出无异常。1波士顿房价预测1.3
任务实施1.3.2数据探查文件读入DataFrame对象后,需要观察不同标签的数据分布。步骤1:定义2级标题。##<fontcolor="black">数据探查</font>按“SHIFT+Enter”,运行结果如下:1波士顿房价预测1.3
任务实施步骤2:读入数据集文件到DataFrame对象。names=['人均犯罪率','住宅用地比例','非住宅用地比例','虚拟变量','环保指数','住宅房间数','老住宅比例','就业中心距离','便利指数','不动产税率','师生比','黑人比例','房东收入比例','均价']df=pd.read_csv('C:/data/housing.data',header=None,sep='\s+',names=names)df.head()1波士顿房价预测1.3
任务实施1波士顿房价预测按“SHIFT+Enter”,运行结果如下:1.3
任务实施步骤3:数据描述。df.describe()1波士顿房价预测1.3
任务实施1波士顿房价预测人均犯罪率的均值为3.61,而中位数和最小值只有0.25和0.006,说明存在一些极大值变相地提高了平均值,类似的数据还有住宅用地所占比例等,因此可以后续用箱线图探究此字段中数值的合理性。按“SHIFT+Enter”,运行结果如下:1.3
任务实施1.3.3数据可视化与房价可能相关的相关特征比较多,利用图表能够更加直观地表示数据分布,这里使用Matplotlib绘制图表。1波士顿房价预测1.3
任务实施步骤1:定义2级标题。1波士顿房价预测##<fontcolor="black">数据可视化</font>按“SHIFT+Enter”,运行结果如下:1.3
任务实施步骤2:Matplotlib支持中文字符。mpl.rcParams['font.sans-serif']=['SimHei']按“SHIFT+Enter”,检查输出无异常1波士顿房价预测1.3
任务实施步骤3:利用箱图分析“人均犯罪率”、“住宅用地所占比例”字段的分布趋势。fig=plt.figure()ax1=fig.add_subplot(121)ax1.boxplot(df['人均犯罪率'])ax1.set_title('人均犯罪率_箱图')ax2=fig.add_subplot(122)ax2.boxplot(df['住宅用地比例'])ax2.set_title('住宅用地比例_箱图')plt.show()1波士顿房价预测1.3
任务实施1波士顿房价预测按“SHIFT+Enter”,运行结果如下:人均犯罪率和住宅用地比例的许多数据都集中在75%分位数以上,说明这个数据不是正态分布,且存在较多的极端值。1.3
任务实施1波士顿房价预测知识点:百分位数百分位数将一组数据从小到大排序,并计算相应的累计百分位,则某一百分位所对应数据的值就称为这一百分位的百分位数。1.3
任务实施步骤4:利用直方图分析房子“均价”字段的分布趋势。plt.hist(df['均价'],color='skyblue')plt.axvline(x=df['均价'].describe()['25%'].mean(),linestyle='--',color='red')plt.axvline(x=df['均价'].describe()['50%'],linestyle='--',color='darkorange')plt.axvline(x=df['均价'].describe()['75%'],linestyle='--',color='yellowgreen')plt.title("房价均值直方图")plt.show()1波士顿房价预测1.3
任务实施1波士顿房价预测按“SHIFT+Enter”,运行结果如下:从该直方图中可以得知在波士顿地区20000美元左右的房价最多,存在少量高房价房源。1.3
任务实施1.3.4数据转换步骤1:定义2级标题。##<fontcolor="black">数据转换</font>按“SHIFT+Enter”,运行结果如下:1波士顿房价预测1.3
任务实施步骤2:拆分出特征和标签。X=df.iloc[:,0:-1].valuesy=df.iloc[:,-1]按“SHIFT+Enter”,
检查输出无异常1波士顿房价预测1.3
任务实施1.3.5模型训练步骤1:定义2级标题。##<fontcolor="black">模型训练</font>按“SHIFT+Enter”,运行结果如下:1波士顿房价预测1.3
任务实施步骤2:数据集拆分成训练集和测试集,测试集占20%。X_train,X_test,y_train,y_test=model_selection.train_test_split(X,y,random_state=4,test_size=0.2)X_train.shape,X_test.shape按“SHIFT+Enter”,运行结果如下:1波士顿房价预测1.3
任务实施步骤3:在训练集上训练线性回归模型。lr_model=LinearRegression()lr_model.fit(X_train,y_train)按“SHIFT+Enter”,运行结果如下:1波士顿房价预测1.3
任务实施1波士顿房价预测知识点:线性回归模型线性回归模型线性回归模型是一种预测性的建模技术,它研究的是因变量(目标)和自变量(预测器)之间的关系,具体过程是:给定n个属性x=(x1,x2,x3,∙∙∙,xn),其中xi是x在第i个属性上的取值,线性模型f(x)=b1x1+b2x2+b3x3+∙∙∙+bnxn,其中,bi和b0为参数,参数确定之后,模型就确定了。
线性回归模型分为一元线性回归和多元线性回归。1.3
任务实施1波士顿房价预测线性回归算法1)一元线性回归
只用一个x来预测y,即找一条直线来拟合数据,并且让这条直线尽可能地拟合图中的数据点,当有一个新的x的时候,就可以用这个直线方程来预测大概的y值。2)多元线性回归
用多个x的线性组合来预测y,比如当有2个x(x1、x2)的时候,相当于找一个平面来拟合数据,并且让这个平面尽可能地拟合图中的数据点,建立相应的多元线性回归方程,当有一组新的(x1、x2)的时候,就可以用这个方程来预测大概的y值。接上1.3
任务实施1.3.6模型评估步骤1:定义2级标题。##<fontcolor="black">模型评估</font>按“SHIFT+Enter”,运行结果如下:1波士顿房价预测1.3
任务实施步骤2:计算模型拟合度。R2=lr_model.score(X_test,y_test)print("预测准确率=%.2f%%"%(R2*100))按“SHIFT+Enter”,运行结果如下:1波士顿房价预测1.3
任务实施1.3.7降维为了便于辨别每一个特征和自住房屋房价的关系,通过DataFrame类的corr方法找到线性关系不明显的特征后删除,提高线性回归模型的预测准确率。1波士顿房价预测步骤1:定义2级标题。##<fontcolor="black">降维</font>按“SHIFT+Enter”,运行结果如下:1.3
任务实施1波士顿房价预测知识点:降维降维降维是指通过保留一些比较重要的特征,去除一些冗余的特征,减少数据特征的维度。如果维度数据较大大,并且降维后对模型精度影响也不大,那么就可以进行降维。
特征选择是一种重要的降维方法,特征选择用选择的特征代替所有特征,不改变原有特征,也不产生新的特征值,简而言之就是留下重要的,去掉不重要的,其关键点在于区分变量的重要性。1.3
任务实施1波士顿房价预测步骤2:计算相关系数。df.corr()["均价"]按“SHIFT+Enter”,运行结果如下:绝对值最低的特征是虚拟变量,在模型训练中去除这个特征再次训练后评估。1.3
任务实施1波士顿房价预测知识点:相关系数相关系数相关系数是最早由统计学家卡尔·皮尔逊设计的统计指标,是研究变量之间线性相关程度的量,一般用字母r表示。由于研究对象的不同,相关系数有多种定义方式,较为常用的是皮尔逊相关系数。
相关表和相关图可反映两个变量之间的相互关系及其相关方向,但无法确切地表明两个变量之间相关的程度。相关系数是用以反映变量之间相关关系密切程度的统计指标。相关系数一般介于-1和1之间,相关系数绝对值越大,相关性越强。1.3
任务实施1波士顿房价预测步骤3:从训练数据中去除相关系数最低的列。less_cols=list(range(13))less_cols.remove(3)#删除虚拟标量特征less_cols按“SHIFT+Enter”,运行结果如下:1.3
任务实施1波士顿房价预测步骤4:降维后训练模型。X_train_less=X_train[:,less_cols]lr_model=LinearRegression()lr_model.fit(X_train_less,y_train)按“SHIFT+Enter”,检查输出无异常1.3
任务实施1波士顿房价预测步骤5:重新预测。X_test_less=X_test[:,less_cols]R2=lr_model.score(X_test_less,y_test)print("预测准确率=%.2f%%"%(R2*100))按“SHIFT+Enter”,运行结果如下:从最后的结果可以看出,去除最低列之后,模型的拟合度有所上升。数据集diabetes.csv是一个关于糖尿病的数据集,该数据集包括442个病人的生理数据及一年以后的病情发展情况,特征值包括年龄、性别、血压、胆固醇等10项,通过这10项数据完成糖尿病发展阶段指数的线性回归预测。详细的字段描述见下表。2.1任务描述字段字段类型允许为空标签?例子年龄int否否59性别Str否否1身体质量指数float否否32.1血压float否否101.02糖尿病病期预测注:1.性别字段中,0表示女性,1表示男性。2.1任务描述字段字段类型允许为空标签?例子血清胆固醇int否否157低密度脂蛋白float否否93.2高密度脂蛋白float否否38.0总胆固醇
float否否4.0血清甘油三酯对数float否否4.8598血糖int否否87发展阶段int否是151接上2糖尿病病期预测2.1任务描述1)通过年龄(如59)、性别(如1)、身体质量指数(如32.1)等10个属性值,预测该患者的糖尿病发展阶段指数。2)通过拟合度指标R2评价回归模型的拟合效果。任务目标2糖尿病病期预测2.2
任务分解import方式引入依赖的模块可视化样本的空间分布、待测试样本和训练样本的空间关系依赖库导入数据探查数据可视化从探查数据内容开始,经过分析数据分布,使用逻辑回归模型找到标签和数据特征之间的关系,然后利用线性回归模型测试数据,通过模型拟合度R2评价模型。检查样本分布、特征/标签类型、空值、重复行、属性相互关系2糖尿病病期预测2.2
任务分解转换Pandas类型到Numpy类型在已知样本上训练回归模型通过相关系数找到关系不明显的特征后删除,提高线性回归模型的预测准确率数据转换模型训练降维接上模型评估根据测试集预测得到的label,跟真实label比较,计算预测准确率2糖尿病病期预测2.3
任务实施2.3.1依赖库导入步骤1:定义2级标题。##<fontcolor="black">依赖库导入</font>按“SHIFT+Enter”,运行结果如下:2糖尿病病期预测2.3
任务实施步骤2:导入依赖库。importpandasaspdimportmatplotlibasmplimportmatplotlib.pyplotaspltfromsklearnimportmodel_selectionfromsklearn.linear_modelimportLinearRegression按“SHIFT+Enter”,检查输出无异常。2糖尿病病期预测2.3
任务实施2.3.2数据探查文件读入DataFrame对象后,需要观察不同标签的数据特征。步骤1:定义2级标题。##<fontcolor="black">数据探查</font>按“SHIFT+Enter”,运行结果如下:2糖尿病病期预测2.3
任务实施步骤2:读入数据集文件到DataFrame对象。df=pd.read_csv('C:/data/diabetes.csv',sep='\s+')df.head()2糖尿病病期预测2.3
任务实施按“SHIFT+Enter”,运行结果如下:2糖尿病病期预测2.3
任务实施步骤3:数据描述。df.describe()2糖尿病病期预测2.3
任务实施所有的字段包含442个样本数,因此数据集不存在缺失值的情况。结合均值、标准差、最小值和可以发现几乎所有的字段的均值都近似等于中位数,且标准差都明显小于均值,可以初步判断出这些字段的数据较为合理。按“SHIFT+Enter”,运行结果如下:2糖尿病病期预测2.3
任务实施步骤4:年龄字段分段统计。数据分段可以将年龄转换为年龄段,方便后续统计。df['年龄段']=pd.cut(x=df['年龄'],bins=[0,39,49,59,69,79],labels=['40以下','40-49','50-59','60-69','70-79'])#pd.cut表示数据分段age_count=df['年龄段'].value_counts()#value_counts:数据频数统计age_count=age_count.reindex(['40以下','40-49','50-59','60-69','70-79'])age_count2糖尿病病期预测2.3
任务实施按“SHIFT+Enter”,运行结果如下:可以看出年龄分布基本符合正态分布,50-59岁最多。2糖尿病病期预测2.3
任务实施知识点:数据分段数据分段在数据分析中,常常需要将连续数据离散化,这就是数据分段。数据分段就是指在连续数据取值范围内设置一些离散的分段点,而将连续数据按照这些分段点进行分段。
比如在人口普查时,并不一定会统计每个年龄的比例,而是将年龄分为年轻型、成年型和老年型等不同年龄段,进行统计。Pandas提供了cut函数进行数据分段,具体用法可以参考pandas.cut(x,bins,labels)函数。2糖尿病病期预测2.3
任务实施步骤5:性别字段统计。gender_count=df['性别'].value_counts()gender_count.index=['男','女']gender_count2糖尿病病期预测按“SHIFT+Enter”,运行结果如下:可以看出男性患者比女性患者多。2.3
任务实施2.3.3数据可视化2糖尿病病期预测##<fontcolor="black">数据可视化</font>按“SHIFT+Enter”,运行结果如下:步骤1:定义2级标题。2.3
任务实施步骤2:Matplotlib支持中文字符和减号。plt.rcParams['font.sans-serif']=['SimHei']plt.rcParams[‘axes.unicode_minus']=False按“SHIFT+Enter”,检查输出无异常2糖尿病病期预测2.3
任务实施步骤3:利用箱图分析“人均犯罪率”、“住宅用地所占比例”字段的分布趋势。fig=plt.figure(figsize=(10,4))ax1=fig.add_subplot(121)plt.rcParams['figure.figsize']=(3,3)ax1.bar(x=age_count.index,height=age_count,color='lightgreen',edgecolor='blue')ax1.set_title('年龄_直方图')ax2=fig.add_subplot(122)ax2.pie(gender_count,colors=['darkorange','skyblue'],labels=['男','女'],autopct='%.1f%%')ax2.set_title('性别_饼图')plt.show()2糖尿病病期预测2.3
任务实施按“SHIFT+Enter”,运行结果如下:2糖尿病病期预测2.3
任务实施1波士顿房价预测知识点:饼图饼图饼图是以圆形代表研究对象的整体,用以圆心为共同顶点的各个不同扇形显示各组成部分在整体中所占的比例,一般可用图例表明各扇形所代表的项目的名称及其所占百分比。
饼状图可以比较清楚地反映出部分与部分、部分与整体之间的数量关系,易于显示每组数据相对于总数的比例,而且比较直观。Matplotlib.pyplot模块提供了pie函数绘制饼图,具体用法可以参考plt.pie(x,colors,labels,autopct,explode,radius)函数。2.3
任务实施步骤4:利用双折线图比较糖尿病发展指数与血压、总胆固醇、血糖的关系。因为糖尿病发展指数与血压、总胆固醇、血糖的数据范围有所不同,如果直接绘制图形,效果不好,因此先将数据进行标准化,标准化的方法为(x-平均值)/标准差。2糖尿病病期预测2.3
任务实施2糖尿病病期预测fig=plt.figure(figsize=(12,10))ax1=fig.add_subplot(311)x=df.index[:100]y1=df['血压'][:100]y1=(y1-y1.mean())/y1.std()y2=df['发展阶段'][:100]y2=(y2-y2.mean())/y2.std()ax1.plot(x,y1,color='red')ax1.plot(x,y2,'darkgreen',linestyle='--')ax1.set_title('血压--发展阶段')2.3
任务实施2糖尿病病期预测接上ax2=fig.add_subplot(312)x=df.index[:100]y1=df['总胆固醇'][:100]y1=(y1-y1.mean())/y1.std()y2=df['发展阶段'][:100]y2=(y2-y2.mean())/y2.std()ax2.plot(x,y1,color='red')ax2.plot(x,y2,'darkgreen',linestyle='--')ax2.set_title('总胆固醇--发展阶段')2.3
任务实施2糖尿病病期预测接上ax3=fig.add_subplot(313)x=df.index[:100]y1=df['血糖'][:100]y1=(y1-y1.mean())/y1.std()y2=df['发展阶段'][:100]y2=(y2-y2.mean())/y2.std()ax3.plot(x,y1,color='red')ax3.plot(x,y2,'darkgreen',linestyle='--')ax3.set_title('血糖--发展阶段')plt.show()2.3
任务实施按“SHIFT+Enter”,运行结果如下:2糖尿病病期预测2.3
任务实施知识点:数据标准化数据标准化在进行数据分析时,数据具有单位是非常常见的,比如GDP可以以亿作为单元,也可以以百万作为单位,此时就会出现由于单位问题导致的数字大小问题,这种情况对于分析可能产生影响,因此需要对其进行处理。还有一种情况是计算距离,数字1和2的距离可以直接相减得到距离值为1,另外一组数据为10000和20000,两个数字直接相减得到距离值为10000。如果说距离数字越大代表距离越远,那么明显10000大于1,但这种情况仅仅是由于数据单位导致的。2糖尿病病期预测2.3
任务实施数据标准化类似这些情况,在进行数据分析之前,需要先将数据标准化,数据标准化就是通过一定的数学变换方式,对原始数据进行一定转换,使原始数据转换为无量纲化指标测评值,即各指标值都处于同一个数量级别上,这样可以进行综合分析和比较。标准化是一种最为常见的量纲化处理方式,其计算公式为:z=(x-x̅)/s。接上2糖尿病病期预测2.3
任务实施2.3.4数据转换步骤1:定义2级标题。##<fontcolor="black">数据转换</font>按“SHIFT+Enter”,运行结果如下:2糖尿病病期预测2.3
任务实施步骤2:查看数据。df.head()按“SHIFT+Enter”,运行结果如下:2糖尿病病期预测2.3
任务实施步骤3:删除新生成的字段“年龄段”。df.drop(labels='年龄段',axis=1,inplace=True)df.head()按“SHIFT+Enter”,运行结果如下:2糖尿病病期预测2.3
任务实施步骤4:拆分出特征和标签。X=df.iloc[:,0:-1].valuesy=df.iloc[:,-1]按“SHIFT+Enter”,
检查输出无异常2糖尿病病期预测2.3
任务实施2.3.5模型训练步骤1:定义2级标题。##<fontcolor="black">模型训练</font>按“SHIFT+Enter”,运行结果如下:2糖尿病病期预测2.3
任务实施步骤2:数据集拆分成训练集和测试集,测试集占20%。X_train,X_test,y_train,y_test=model_selection.train_test_split(X,y,random_state=4,test_size=0.2)X_train.shape,X_test.shape按“SHIFT+Enter”,运行结果如下:2糖尿病病期预测2.3
任务实施步骤3:在训练集上训练线性回归模型。lr_model=LinearRegression()lr_model.fit(X_train,y_train)按“SHIFT+Enter”,运行结果如下:2糖尿病病期预测2.3
任务实施2.3.6模型评估步骤1:定义2级标题。##<fontcolor="black">模型评估</font>按“SHIFT+Enter”,运行结果如下:2糖尿病病期预测2.3
任务实施步骤2:计算模型拟合度。R2=lr_model.score(X_test,y_test)print("预测准确率=%.2f%%"%(R2*100))按“SHIFT+Enter”,运行结果如下:2糖尿病病期预测2.3
任务实施2.3.7降维为了便于辨别每一个特征和自住房屋房价的关系,通过DataFrame类的corr方法找到线性关系不明显的特征后删除,提高线性回归模型的预测准确率。步骤1:定义2级标题。##<fontcolor="black">降维</font>按“SHIFT+Enter”,运行结果如下:2糖尿病病期预测2.3
任务实施步骤2:计算相关系数。df.corr()["发展阶段"]2糖尿病病期预测绝对值最低的特征是性别,在模型训练中去除这个特征再次训练后评估。按“SHIFT+Enter”,运行结果如下:2.3
任务实施步骤3:从训练数据中去除相关系数最低的两列。less_cols=list(range(10))less_cols.remove(1)less_cols按“SHIFT+Enter”,运行结果如下:2糖尿病病期预测2.3
任务实施步骤4:降维后训练模型。X_train_less=X_train[:,less_cols]lr_model=LinearRegression()lr_model.fit(X_train_less,y_train)按“SHIFT+Enter”,检查输出无异常2糖尿病病期预测2.3
任务实施步骤5:重新预测。X_test_less=X_test[:,less_cols]R2=lr_model.score(X_test_less,y_test)print("预测准确率=%.2f%%"%(R2*100))按“SHIFT+Enter”,运行结果如下:从最后的结果可以看出,去除1列之后,模型的拟合度有所上升。2糖尿病病期预测数据集buycar.txt是一个关于汽车购买的数据集,该数据集包括50个用户的年龄、性别、收入等数据,通过这些数据建立逻辑回归模型,并预测购买汽车的结果。详细的字段描述见下表。3.1任务描述字段字段类型允许为空标签?例子IDint否否15624510性别int否否1年龄int否否19年收入int否否19000是否买车int否是03汽车购买预测注:1.性别字段中,0表示女性,1表示男性。2.是否买车字段中,0表示用户尚未购买汽车,而1则表示已购买汽车。3.1任务描述1)通过用户的性别、年龄、年收入(万元),预测该用户的购买汽车的可能性。2)计算模型预测的准确率。3)通过numpy生成年龄、年收入的随机数,利用已经建立的逻辑回归模型进行结果预测。任务目标3汽车购买预测3.2
任务分解import方式引入依赖的模块可视化样本的空间分布、待测试样本和训练样本的空间关系依赖库导入数据探查数据可视化从探查数据内容开始,经过分析数据分布,使用逻辑回归模型找到标签和数据特征之间的关系,然后利用线性回归模型测试数据,通过模型拟合度R2评价模型。检查样本分布、特征/标签类型、空值、重复行、属性相互关系3汽车购买预测3.2
任务分解转换Pandas类型到Numpy类型在已知样本上训练回归模型利用已经建立的逻辑回归模型进行结果预测数据转换模型训练预测接上模型评估根据测试集预测得到的label,跟真实label比较,计算预测准确率3汽车购买预测3.3
任务实施3.3.1依赖库导入步骤1:定义2级标题。##<fontcolor="black">依赖库导入</font>按“SHIFT+Enter”,运行结果如下:3汽车购买预测3.3
任务实施步骤2:导入依赖库。importnumpyasnpimportpandasaspdimportmatplotlibasmplimportmatplotlib.pyplotaspltfromsklearnimportmodel_selectionfromsklearn.preprocessingimportStandardScalerfromsklearn.linear_modelimportLogisticRegression按“SHIFT+Enter”,检查输出无异常。3汽车购买预测3.3
任务实施3.3.2数据探查文件读入DataFrame对象后,需要观察不同标签的数据特征。步骤1:定义2级标题。##<fontcolor="black">数据探查</font>按“SHIFT+Enter”,运行结果如下:3汽车购买预测3.3
任务实施步骤2:读入数据集文件到DataFrame对象。names=['ID','性别','年龄','年收入',"是否买车"]df=pd.read_csv('c:/data/buycar.txt',header=None,names=names)df.head(10)3汽车购买预测3.3
任务实施按“SHIFT+Enter”,运行结果如下:3汽车购买预测3.3
任务实施步骤3:数据描述。()3汽车购买预测按“SHIFT+Enter”,运行结果如下:3.3
任务实施步骤4:是否购买汽车频数统计。首先将0转换为“不买”,将1转换为“买”,再进行统计。df_new=df.replace({0:'不买',1:'买'})buy_result=df_new['是否买车'].value_counts()buy_result按“SHIFT+Enter”,运行结果如下:3汽车购买预测3.3
任务实施步骤5:数据分组统计。按照是否买车将客户分为两组,再统计不同组的平均年龄。group_buy_age=df_new.groupby(by='是否买车')['年龄'].mean()group_buy_age=round(group_buy_age,0)print("是否购买汽车用户的平均年龄:")group_buy_age按“SHIFT+Enter”,运行结果如下:。不买车用户的平均年龄显著低于买车用户。3汽车购买预测3.3
任务实施步骤5:数据分组统计。按照是否买车将客户分为两组,再统计不同组的平均收入。group_buy_income=df_new.groupby(by='是否买车')['年收入'].mean()group_buy_income=round(group_buy_income,0)print("是否购买汽车用户的平均年收入:")group_buy_income按“SHIFT+Enter”,运行结果如下:。不买车用户的平均收入显著高于买车用户。3汽车购买预测3.3
任务实施3.3.3数据可视化##<fontcolor="black">数据可视化</font>按“SHIFT+Enter”,运行结果如下:3汽车购买预测3.3
任务实施步骤2:Matplotlib支持中文字符。mpl.rcParams['font.sans-serif']=['SimHei']按“SHIFT+Enter”,检查输出无异常3汽车购买预测3.3
任务实施步骤3:利用圆环图显示是否购买用户比例。data=buy_resultlab=buy_result.indexplt.pie(x=buy_result,labels=buy_result.index,autopct='%.1f%%',colors=['darkorange','lightgreen'],radius=0.7)plt.pie(x=[1],colors='w',radius=0.5)plt.show()3汽车购买预测3.3
任务实施按“SHIFT+Enter”,运行结果如下:3汽车购买预测3.3
任务实施知识点:圆环图圆环图圆环图像饼图一样,圆环图显示各个部分与整体之间的关系绘制圆环图时。绘制圆环图时,可以在一个绘图窗口中,分别绘制两个饼图,嵌套在一起,并对两个饼图分别设置参数和颜色,得到圆环图。外层饼图起到显示的效果,而内层饼图起到遮挡的效果。设置时,只需将内层饼图设置一个值而不会被分割,同时将内层饼图的背景颜色设为白色即可。
Matplotlib.pyplot模块提供了pie函数绘制圆环图,具体函数用法可以参考plt.pie(x,colors,labels,autopct,explode,radius)的函数用法。3汽车购买预测3.3
任务实施步骤4:利用条形图显示用户的特征数据分布。fig=plt.figure(figsize=(10,8))ax1=fig.add_subplot(211)x=group_buy_age.indexy=group_buy_ageax1.barh(x,y,height=0.4,color='skyblue')ax1.set_title('是否购买汽车用户的平均年收入')3汽车购买预测3.3
任务实施接上ax2=fig.add_subplot(212)x=group_buy_income.indexy=group_buy_incomeax2.barh(x,y,height=0.4,color='skyblue')ax2.set_title('是否购买汽车用户的平均年收入')plt.show()3汽车购买预测3.3
任务实施按“SHIFT+Enter”,运行结果如下:3汽车购买预测3.3
任务实施3.3.4数据转换步骤1:定义2级标题。##<fontcolor="black">数据转换</font>按“SHIFT+Enter”,检查输出无异常3汽车购买预测3.3
任务实施步骤2:选取数值型变量“年龄”和“年收入”2个字段作为自变量。X=df.iloc[:,[2,3]].valuesy=df.iloc[:,4].values按“SHIFT+Enter”,检查输出无异常3汽车购买预测3.3
任务实施3.3.5模型训练步骤1:定义2级标题。##<fontcolor="black">模型训练</font>按“SHIFT+Enter”,运行结果如下:3汽车购买预测3.3
任务实施步骤2:切分训练集和测试集。X_train,X_test,y_train,y_test=model_selection.train_test_split(X,y,random_state=4,test_size=0.2)X_train[:5]按“SHIFT+Enter”,运行结果如下:3汽车购买预测3.3
任务实施步骤3:数据
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【正版授权】 ISO 14486:2025 EN Laminate floor coverings - Specification
- 卡位包间租赁合同范本
- 废铁供应合同范本
- 美利车贷合同范本
- 毕业灵活就业合同范本
- 机械卖买合同范本
- 城建首府购房合同范本
- 直播运营签约合同范本
- 技术共同合作合同范本
- 加工框架合同范例
- 2017年高考语文全国卷Ⅰ古代诗歌阅读欧阳修《礼部贡院阅进士就试》试题分析
- (完整版)大学物理绪论
- 水电站运行规程与设备管理
- 分泌性中耳炎急慢性中耳炎
- 大学《兽医临床诊断学》期末复习要点、作业、习题库及期末考试试题解析
- 外贸出口商业发票(CI)模板
- 2023年辽宁专升本统考《计算机应用基础》高频核心题库300题(含答案)
- 煤矿建设安全规范
- 风险管理与保险智慧树知到答案章节测试2023年上海财经大学
- 2022年河南检察职业学院单招综合素质试题及答案解析
- 《电力系统继电保护故障信息采集及处理系统设计与实现【论文11000字】》
评论
0/150
提交评论