# 1.pandas的基本使用方法
# 导入pandas,并重命名为pd
import pandas as pd
# 使用pandas读取csv文件,载入数据框(DataFrame)
# 文件路径换成自己保存的路径
# 这个数据集是用“;”作为分隔符,需要设置sep参数为“;”,默认情况下是“,”
data = pd.read_csv('C:/Users/Administrator/Desktop/bank/bank.csv',sep = ';')
# 用.head()可以显示数据框的前5行
data.head()
运行结果:
# 查看数据集的描述信息
data.info()
运行结果:
# 查看数据集的统计信息
data.describe()
# 查看样本婚姻状况的统计信息
data['marital'].describe()
# 查看样本婚姻状况中有哪些不同的数值
data['marital'].unique()
# 2.可视化工具的基本使用方法
# 2.1 使用seaborn绘制直方图
# 使用seaborn需要先导入Matlotlib
import matplotlib.pyplot as plt
# 导入seaborn
import seaborn as sns
# 使用distplot来绘制图形
sns.distplot(data['age'])
# 显示图形
plt.show()
# 2.2 使用seaborn绘制计数图
# 使用countplt展示样本婚姻状况分布
sns.countplot(data['marital'])
# 显示图形
plt.show()
# 2.3 使用seaborn和Matplotlib按组展示多个特征
# 定义一个网格,令网格的列代表婚姻状况
grid = sns.FacetGrid(data,col = 'marital')
# 在网格中绘制样本年龄直方图,步长指定为10
grid.map(plt.hist,'age',bins = 10)
# 显示图片
plt.show()
# 3.掌握scikit-leran的基本操作
# 3.1 使用scikit-learn加载并检查数据
# 首先从scikit-learn 中导入databases模块
from sklearn import datasets
# 载入手写数字识别数字集
digits = datasets.load_digits()
# 检查载入数据集中的键名
digits.keys()
# 检查数据集中DESCR键所对应的值
print(digits.DESCR)
# 3.2 使用scikit-learn训练模型并评估(重点)
# 导入数据集拆分工具
from sklearn.model_selection import train_test_split
# 把数据集中的样本特征赋值给X
x = digits.data
# 把样本的分类标签赋值给y
y = digits.target
# 检查x和y的形态
x.shape,y.shape
# 使用train_test_split将x和y拆分为训练集和测试集的特征和标签
# 指定随机种子random_state为42,便于复现
x_train,x_test,y_train,y_test = train_test_split(x,y,random_state = 42)
# 检查训练集和测试集中的样本的形态
x_train.shape,x_test.shape
# 导入支持向量机
from sklearn import svm
# 使用svm中的svc作为分类器
clf = svm.SVC()
# 使用训练集对模型进行训练
clf.fit(x_train,y_train)
# 使用clf.score在测试集中评估模型准确率
clf.score(x_test,y_test)
#3.3 保存和载入训练好的模型文件
#导入pickle模块(可将模型保存为文件,实现模型持久化)
import pickle
# 建立一个名为model.pkl的文件,模式为“写入”
model = open('model.pkl','wb')
# 使用pickle保存模型
pickle.dump(clf,model)
# 关闭model文件
model.close()
运行上述代码后,硬盘和notebook同一个文件夹下多了一个名为"model.pkl"的文件,说明保存成功。
当需要调用这个模型文件时,输入
# 以读取的方式打开之前保存好的模型文件
model_file = open('model.pkl','rb')
# 用pickle将打开的文件加载回来
clf2 = pickle.load(model_file)
# 使用加载的模型预测测试集中的最后一个样本
clf2.predict(x_test[-1:])
模型给出的预测结果是5,也就是说测试集中最后一个手写数字是5.