机器学习复习(回归课本)

1.使用心脏病数据集训练决策树模型

import pandas as pd
#导入tree模块中的决策树模型
from sklearn.tree import DecisionTreeClassifier
heart=pd.read_csv('heart.csv')
heart.head()
heart.info()
#创建决策树分类器
clf_tree=DecisionTreeClassifier()
#导入数据集拆分工具
from sklearn.model_selection import train_test_split
x=heart.drop('target',axis=1)
y=heart['target']
#将x,y拆分成训练集和验证集
x_train,x_test,y_train,y_test=train_test_split(x,y,random_state=0)
clf_tree.fit(x_train,y_train)
#使用验证集评估模型的准确性
print(clf_tree.score(x_train,y_train))
print(clf_tree.score(x_test,y_test))

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

#下面我们会用到pandas来载入数据
import pandas as pd
#使用pandas读取下载的csv,文件路径换成你自己的
abalone=pd.read_csv('abalone.csv')
#检查是否加载成功,查看前5行
abalone.head()
#查看一下数据类型以及是否有空值
abalone.info()
#接下来会用到seaborn和plt
import seaborn as sns
import matplotlib.pyplot as plt
#绘制计数图,了解鲍鱼性别分布
sns.countplot(x='Sex',data=abalone,palette='Set2')
#展示图像
plt.show()
#用Rings+1.5计算出年龄,并添加到原数据集中,命名为‘age’
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
#因为“性别”这一列是字符串,所以用get_dummies进行以下处理
from sklearn.svm import SVR
#转换为整数类型
data=pd.get_dummies(abalone)
#除“Rings”和“age”这两列之外作为特征输入给x
x=data.drop(['Rings','age'],axis=1)
#将“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)
#使用训练集训练模型
svr.fit(x_train,y_train)
#检查模型的准确率
svr.score(x_test, y_test)

3.使用房价数据集训练朴素贝叶斯模型

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

4.使用随机数据集训练KNN分类模型

#导入数据集生成器
from sklearn.datasets import make_blobs
#导入KNN分类器
from sklearn.neighbors import KNeighborsClassifier
#导入画图工具
import matplotlib.pyplot as plt
#导入数据集拆分工具
from sklearn.model_selection import train_test_split
#生成样本数量为100,分类数量为2的数据集
data=make_blobs(n_samples=100,centers=2,random_state=9)
X,y=data
#对生成的数据集进行可视化
plt.scatter(X[y==1,0],X[y==1,1],cmap=plt.cm.spring,edgecolor='k',marker='^')
plt.scatter(X[y==0,0],X[y==0,1],cmap=plt.cm.spring,edgecolor='k',marker='o')
plt.show()

5.使用申请国外大学数据集训练KNN分类模型 

#载入numpy
import numpy as np
#载入pandas
import pandas as pd
#使用pandas载入数据集,把路径替换为你自己的
data = pd.read_csv('Admission_Predict.csv')
#显示以下数据集前5行
data.head()
#查看数据集的整体信息
data.info()
#查看数据特征的统计信息
data.describe()
#丢弃掉Serial No.这个特征
data.drop(['Serial No.'], axis = 1, inplace = True)
#把去掉预测目标Chance of Admit后的数据集作为x
X = data.drop(['Chance of Admit '],axis=1)
#把预测目标赋值给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模型
from sklearn.neighbors import KNeighborsRegressor
#实例化一个KNN模型
knk = KNeighborsRegressor()
#用模型对数据进行拟合
knk.fit(X_train,y_train)
#打印模型在测试集上的得分
print('模型在测试集上的得分:{}'.format(knk.score(X_test,y_test)))
#输入新的数据点
X_new = np.array([[337, 118, 4, 4.5, 4.5, 9.65, 1]])
#进行预测
prediction = knk.predict(X_new)
print('K最近邻算法模型预测结果:')
print("预测小P同学的综合评分为:{}".format(prediction))

6.使用蘑菇数据集训练高斯朴素贝叶斯模型

#导入高斯朴素贝叶斯
from sklearn.naive_bayes import GaussianNB
#创建高斯朴素贝叶斯分类器,并使用训练集进行训练
gnb = GaussianNB()
gnb.fit(X_train,y_train)
#输出模型得分
print('模型得分:{:.3f}'.format(gnb.score(X_test,y_test)))

7.使用蘑菇数据集训练多项式朴素贝叶斯模型

#导入拆分样本工具
from sklearn.model_selection import train_test_split
import pandas as pd
mushroom = pd.read_csv('mushroom.csv')
mushroom.head()
#统计数据集中的空值
mushroom.isnull().sum()
#验证集中的分类
mushroom['class'].unique()
#导入sklearn标签预处理工具
from sklearn.preprocessing import LabelEncoder
labelencoder=LabelEncoder()
for col in mushroom.columns:
    mushroom[col] = labelencoder.fit_transform(mushroom[col])
mushroom.head()
#统计不同分类的样本数量
mushroom['class'].value_counts()

#导入多项式朴素贝叶斯
from sklearn.naive_bayes import MultinomialNB
#将数据集的第2到22个特征赋值给X
X = mushroom.iloc[:,1:23]
#将数据集的分类标签赋值给y
y = mushroom.iloc[:,0]
#拆分训练集与验证集
X_train,X_test,y_train,y_test=train_test_split(X,y,random_state=42)
#创建多项式贝叶斯分类器
mnb = MultinomialNB()
#使用训练集训练模型
mnb.fit(X_train,y_train)
#分别评估模型在训练集和验证集中的准确率
print(mnb.score(X_train,y_train))
print(mnb.score(X_test,y_test))

8.使用鸢尾花数据集训练神经网络模型

#从scikit-learn库的neural_network模块导入MLPClassifier类
from sklearn.neural_network import MLPClassifier
import pandas as pd
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
iris=load_iris()
#选择数据集中的前两个特征,即萼片长度和萼片宽度
x=iris.data[:,:2]
#选择目标变量,即鸢尾花的种类。
y=iris.target
x_train,x_test,y_train,y_test=train_test_split(x,y,random_state=42)
#创建一个MLPClassifier实例,其中solver参数设置为'lbfgs',表示使用L-BFGS算法来优化模型
mlp=MLPClassifier(solver='lbfgs')
mlp.fit(x_train,y_train)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值