《机器学习,Python实践》读书笔记之一

数据呈现

Python中导入csv数据

在Python中导入csv数据,可以使用pandas类库中的read_csv模块。具体方法是:

1
2
3
4
from pandas import read_csv
filename = "/path/to/file.csv"
names = ['Title1','Title2','Title3'] #设置规则数据的列名
dataset = read_csv(filename,names=names)

查看导入数据的维度

使用read_csv获取的数据集有一个shape的属性,shape是一个元组,调用shape并输出,就可以显示数据的维度了。

1
print('数据的维度:行 %s ,列 %s' %dateset.shape)

查看数据内容

直接打印dataset就可以查看数据内容了,如果需要显示前n行,则使用

1
print(dataset.head(n))

统计描述数据

数据特征的统计描述信息包括数据的行数、中位值、最大值、最小值、均值、四分位值等统计信息,可通过以下代码获得:

1
print(dataset.describe())

数据分类分布

以数据表中的某一列为特征,对数据个数进行分类统计,可通过以下代码实现:

1
print(dataset.groupby('class').size)  #class为列标题

数据可视化

将dataset中的数据进行可视化处理,要使用到matplotlib类库中的pyplot模块,可以呈现的图形样式较多,比如:

1
2
dataset.plot(kinde='box', subplots=True, layout=(2,2)) #这其中的box,也可更换为line,bar等不同的图形形状
pyplot.show()

也可以将这种箱线图直接换成直方图——hist(),以及多变量图表——scatter_matrix(dataset)

数据处理

分离评估数据集

1
X_train,X_validation,Y_train,Y_validation=train_test_split(X,Y,test_size=validation_size,random_state=seed)

上述代码是用来分离训练数据集和评估数据集的,train_test_split中的参数释义如下:

  • X是所要划分的样本特征集
  • Y是所要划分的样本结果(类别)
  • test_size是指样本占比,如果是整数的话,那就是样本的数量
  • random_state是指随机数的种子

评估模式

10折交叉验证,是指随机地将数据分成10分,9份用来训练模型,1份用来评估算法。

创建模型

创建模型,进行算法审查,看哪种模型准确度高。

1
2
3
4
5
6
7
8
9
10
11
12
13
models={}
models['LR']=LogisticRegression() #线性回归
models['LDA']=LinearDiscriminantAnalysis() #线性差别分析
models['KNN']=KNeighborsClassifier() #K近邻
models['CART']=DecisionTreeClassifier() #分类与回归树
models['NB']=GaussianNB() #贝叶斯分类器
models['SVM']=SVC() #支持微量机
results=[]
for key in models:
kfold=KFold(n_splits=10,random_state=seed)
cv_results=cross_val_score(models[key],X_train,Y_train,cv=kfold,scoring='accuracy')
results.append(cv_results)
print('%s:%f (%f)' % (key,cv_results.mean(),cv_result.std()))

选择模型

使用箱线图比较上述六种算法

1
2
3
4
5
6
fig=pyplot.figure()
fig.suptitle('算法比较')
ax=fig.add_subplot(111)
pyplot.boxplot(results)
ax.set_xticklabels(models.key())
pyplot.show()

预测数据

通过比较得出SVM是最佳的算法,因此用预留的评估数据来验证这个算法模型:

1
2
3
4
5
6
svm=SVC()
svm.fit(X=X_train,y=Y_train)
predictions=svm.predict(X_validation)
print(accuracy_score(Y_validation,predictions))
print(confusion_matrix(Y_validation,predicitions))
print(classificatin_report(Y_validation,predictions))

声明:该系列读书笔记所引用知识点均出于《机器学习,Python实践》