机器学习 程序分析

35. (程序分析题, 10.0 分)

单变量线性回归(一元线性模型)

案例一:预测披萨价格

部分代码已给出,请按照提示编程,将代码填入对应选项(A、B、C....)的框中,一个选项只填写一行代码。

代码如下:

#35
import numpy as np
# A. 导入pandas
import pandas as pd

import matplotlib.pyplot as plt
pizza_data = {"size":[6,8,10,14,18],"price":[100,110,130,150,180]}
#B. 把字典转换为pandas数据框
data_frame = pd.DataFrame(pizza_data)

data_frame.head()
X = data_frame["size"].values.reshape(-1,1)
#C. 把pizza价格赋值给y,作为标签
y = data_frame["price"] 

#导入线性回归模型
from sklearn.linear_model import LinearRegression
#D. 创建一个回归器,所有参数保持默认,注意参照下方代码为回归器命名
reg = LinearRegression()
#训练线形回归模型
reg.fit(X,y)
#E. 预测13寸pizza的价格,并输入
print(reg.predict([[13]]))

z = np.linspace(X.min()-1,X.max()+1,20)
plt.scatter(X,y,s=80)
plt.plot(z,reg.predict(z.reshape(-1,1)))
plt.scatter([13],reg.predict([[13]]),s=90)
plt.show()

36. (程序分析题, 10.0 分)

使用bank数据集(见附件),使用pandas和可视化工具按提示完成程序。

部分代码已给出,请按照提示编程,将代码填入对应选项(A、B、C....)中,一个选项只填写一行代码。

代码如下:

#36
#导入pandas,并重命名为pd
import pandas as pd

#使用pandas读取csv,载入到数据框(DataFrame)类型的变量中
#记得把文件路径换成你自己保存的路径
#这个数据集是用;作为分隔符的,需要设置sep参数为‘;’,默认情况下是‘,’
data = pd.read_csv('E:/a软件作业/机器学习/CSV/bank.csv', sep = ';')
#data = pd.read_csv('bank.csv', sep = ';')

#用.head()可以显示数据框的前5行
data.head()
#查看数据集的描述信息
data.info()
#查看数据集的统计信息
data.describe()

#查看样本婚姻状况的统计信息
data['marital'].describe()

#查看样本婚姻状况中有哪些不同的数值
data['marital'].unique()
#使用seaborn需要先导入matplotlib
import matplotlib.pyplot as plt
#导入seaborn
import seaborn as sns
#使用distplot来绘制图形
sns.distplot(data['age'])
#显示图像
plt.show()

#使用countplot展示样本婚姻状态分布
sns.countplot(data['marital'])
#显示图像
plt.show()
#定义一个网格,令网格的列代表婚姻状况
grid = sns.FacetGrid(data, col = 'marital')

#网格中绘制样本年龄的直方图,步长指定为10
grid.map(plt.hist, 'age', bins = 10) 
#显示图像
plt.show()

37. (程序分析题, 10.0 分)

使用鲍鱼数据集训练支持向量机回归模型。

部分代码已给出,请按照提示编程,将代码填入对应选项(A、B、C....)中,一个选项只填写一行代码。

代码如下:

#37
#下面我们会用到pandas来载入数据
import pandas as pd
#使用pandas读取下载的csv,文件路径换成你自己的
#           A
abalone = pd.read_csv('E:/a软件作业/机器学习/CSV/abalone.csv') 
#检查是否加载成功,查看前5行
#           B
abalone.head()
#查看一下数据类型以及是否有空值
#           C
abalone.info()
#接下来会用到seaborn和plt
import seaborn as sns
import matplotlib.pyplot as plt
#绘制计数图,了解鲍鱼性别分布
#            D
sns.countplot(x = 'Sex', data = abalone, palette = 'Set2') 
#展示图像
plt.show()
#用Rings+1.5计算出年龄,并添加到原数据集中,命名为‘age’
#            E
abalone['age'] = abalone['Rings'] + 1.5
#创建一个尺寸为15*5的绘图区
plt.figure(figsize = (15,5))
#分别用分簇散点图swarmplot和小提琴图violinplot进行可视化
sns.swarmplot(x = 'Sex', y = 'age', data = abalone, hue = 'Sex')
sns.violinplot(x = 'Sex', y = 'age', data = abalone)
#展示图像
plt.show()
#导入数据集拆分工具
from sklearn.model_selection import train_test_split
#导入支持向量机回归模型
#            F
from sklearn.svm import SVR
#因为“性别”这一列是字符串,所以用get_dummies进行以下处理
#转换为整数类型
#              G
data = pd.get_dummies(abalone)#(7)
#除“Rings”和“age”这两列之外作为特征输入给x
#             H
x = data.drop(['Rings','age'], axis =1)#8
#将“age”作为标签输入给y
y = data['age']
#将x和y拆分成训练集和预测集
x_train, x_test, y_train, y_test = train_test_split(x,y)
#检查拆分是否成功
x_train.shape
#创建一个支持向量机回归器,gamma参数取1/8,即0.125
svr = SVR(gamma = 0.125)#9
#使用训练集训练模型
svr.fit(x_train, y_train)#10
#检查模型的准确率
svr.score(x_test, y_test)

38. (程序分析题, 10.0 分)

使用house.csv文件训练伯努利朴素贝叶斯模型并预测。

部分代码已给出,请按照提示编程,将代码填入对应选项(A、B、C....)中,一个选项只填写一行代码。注意上下文变量名一致。

代码如下:

#38
#导入pandas
import pandas as pd
#读取保存好的csv文件,路径和文件名换成你自己的
data = pd.read_csv('E:/a软件作业/机器学习/CSV/house.csv',encoding="GBK")
#查看是否读取成功
data.head()
#导入伯努利朴素贝叶斯
#              A
from sklearn.naive_bayes import BernoulliNB 
#定义好样本特征x和分类标签y
x = data.drop(['年份','次年房价是否大幅上涨'], axis = 1)
y = data['次年房价是否大幅上涨']
#创建一个伯努利朴素贝叶斯分类器
#           B
clf = BernoulliNB()
#由于样本数量很少,这里不拆分为训练集和验证集
#使用x和y训练分类器
#           C
clf.fit(x,y)
#验证分类器的准确率
#           D
clf.score(x,y)
#新样本包含2019年三个经济指标
x_2019 = [[1,1,1]]
#对新样本做出预测
#           E
y_2020 = clf.predict(x_2019)
#打印预测结果
print(y_2020)

39. (程序分析题, 10.0 分)

使用申请国外大学相关指标数据集训练KNN回归模型。

部分代码已给出,请按照提示编程,将代码填入对应选项(A、B、C....)中,一个选项只填写一行代码。注意上下文变量名一致。

代码如下:

#39
#载入numpy
import numpy as np
#载入pandas
import pandas as pd
#使用pandas载入数据集,把路径替换为你自己的
#             A
data = pd.read_csv('E:/a软件作业/机器学习/CSV/Admission_Predict.csv')
#显示以下数据集前5行
#             B
data.head() 
#查看数据集的整体信息
#           C
data.info()
#查看数据特征的统计信息
#           D
data.describe()
#丢弃掉Serial No.这个特征
data.drop(['Serial No.'], axis = 1, inplace = True)
#把去掉预测目标Chance of Admit后的数据集作为x
#            E
X = data.drop(['Chance of Admit '], axis = 1)
data.describe()
#把预测目标赋值给y
y = data['Chance of Admit '].values
#导入数据集拆分工具
from sklearn.model_selection import train_test_split
#将数据集拆分为训练数据集和测试数据集
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)
#打印训练数据集中特征向量的形态
print('X_train shape:{}'.format(X_train.shape))
#打印测试数据集中的特征向量的形态
print('X_test shape:{}'.format(X_test.shape))
#打印训练数据集中目标的形态
print('y_train shape:{}'.format(y_train.shape))
#打印测试数据集中目标的形态
print('y_test shape:{}'.format(y_test.shape))
#导入用于回归分析的KNN模型
#              F
from sklearn.neighbors import KNeighborsRegressor 
#实例化一个KNN模型
#          G
reg = KNeighborsRegressor()
#用模型对数据进行拟合
#         H
reg.fit(X_train, y_train)
#打印模型在测试集上的得分
#          I
print('验证数据集得分:{:.2f}'.format(reg.score(X_test, y_test)))
#输入新的数据点
X_new = np.array([[337, 118, 4, 4.5, 4.5, 9.65, 1]])
#进行预测
#           J
prediction = reg.predict(X_new)
print('K最近邻算法模型预测结果:')
print("预测小P同学的综合评分为:{}".format(prediction))

  • 7
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值