如何把数据集导入Python模型(如何将数据导入python)

http://www.itjxue.com  2023-03-29 12:44  来源:未知  点击次数: 

python svm 怎么训练模型

支持向量机SVM(Support Vector Machine)是有监督的分类预测模型,本篇文章使用机器学习库scikit-learn中的手写数字数据集介绍使用Python对SVM模型进行训练并对手写数字进行识别的过程。

准备工作

手写数字识别的原理是将数字的图片分割为8X8的灰度值矩阵,将这64个灰度值作为每个数字的训练集对模型进行训练。手写数字所对应的真实数字作为分类结果。在机器学习sklearn库中已经包含了不同数字的8X8灰度值矩阵,因此我们首先导入sklearn库自带的datasets数据集。然后是交叉验证库,SVM分类算法库,绘制图表库等。

12345678910

#导入自带数据集from sklearn import datasets#导入交叉验证库from sklearn import cross_validation#导入SVM分类算法库from sklearn import svm#导入图表库import matplotlib.pyplot as plt#生成预测结果准确率的混淆矩阵from sklearn import metrics

读取并查看数字矩阵

从sklearn库自带的datasets数据集中读取数字的8X8矩阵信息并赋值给digits。

12

#读取自带数据集并赋值给digitsdigits = datasets.load_digits()

查看其中的数字9可以发现,手写的数字9以64个灰度值保存。从下面的8×8矩阵中很难看出这是数字9。

12

#查看数据集中数字9的矩阵digits.data[9]

以灰度值的方式输出手写数字9的图像,可以看出个大概轮廓。这就是经过切割并以灰度保存的手写数字9。它所对应的64个灰度值就是模型的训练集,而真实的数字9是目标分类。我们的模型所要做的就是在已知64个灰度值与每个数字对应关系的情况下,通过对模型进行训练来对新的手写数字对应的真实数字进行分类。

1234

#绘制图表查看数据集中数字9的图像plt.imshow(digits.images[9], cmap=plt.cm.gray_r, interpolation='nearest')plt.title('digits.target[9]')plt.show()

设置模型的特征X和预测目标Y

查看数据集中的分类目标,可以看到一共有10个分类,分布为0-9。我们将这个分类目标赋值给Y,作为模型的预测目标。

12

#数据集中的目标分类digits.target

12

#将数据集中的目标赋给YY=digits.target

手写数字的64个灰度值作为特征赋值给X,这里需要说明的是64个灰度值是以8×8矩阵的形式保持的,因此我们需要使用reshape函数重新调整矩阵的行列数。这里也就是将8×8的两维数据转换为64×1的一维数据。

123

#使用reshape函数对矩阵进行转换,并赋值给Xn_samples = len(digits.images)X = digits.images.reshape((n_samples, 64))

查看特征值X和预测目标Y的行数,共有1797行,也就是说数据集中共有1797个手写数字的图像,64列是经过我们转化后的灰度值。

12

#查看X和Y的行数X.shape,Y.shape

将数据分割为训练集和测试集

将1797个手写数字的灰度值采用随机抽样的方法分割为训练集和测试集,其中训练集为60%,测试集为40%。

12

#随机抽取生成训练集和测试集,其中训练集的比例为60%,测试集40%X_train, X_test, y_train, y_test = cross_validation.train_test_split(X, Y, test_size=0.4, random_state=0)

查看分割后的测试集数据,共有1078条数据。这些数据将用来训练SVM模型。

12

#查看训练集的行数X_train.shape,y_train.shape

对SVM模型进行训练

将训练集数据X_train和y_train代入到SVM模型中,对模型进行训练。下面是具体的代码和结果。

12

#生成SVM分类模型clf = svm.SVC(gamma=0.001)

12

#使用训练集对svm分类模型进行训练clf.fit(X_train, y_train)

使用测试集测对模型进行测试

使用测试集数据X_test和y_test对训练后的SVM模型进行检验,模型对手写数字分类的准确率为99.3%。这是非常高的准确率。那么是否真的这么靠谱吗?下面我们来单独测试下。

12

#使用测试集衡量分类模型准确率clf.score(X_test, y_test)

我们使用测试集的特征X,也就是每个手写数字的64个灰度值代入到模型中,让SVM模型进行分类。

12

#对测试集数据进行预测predicted=clf.predict(X_test)

然后查看前20个手写数字的分类结果,也就是手写数字所对应的真实数字。下面是具体的分类结果。

12

#查看前20个测试集的预测结果predicted[:20]

再查看训练集中前20个分类结果,也就是真实数字的情况,并将之前的分类结果与测试集的真实结果进行对比。

12

#查看测试集中的真实结果expected=y_test

以下是测试集中前20个真实数字的结果,与前面SVM模型的分类结果对比,前20个结果是一致的。

12

#查看测试集中前20个真实结果expected[:20]

使用混淆矩阵来看下SVM模型对所有测试集数据的预测与真实结果的准确率情况,下面是一个10X10的矩阵,左上角第一行第一个数字60表示实际为0,SVM模型也预测为0的个数,第一行第二个数字表示实际为0,SVM模型预测为1的数字。第二行第二个数字73表示实际为1,SVM模型也预测为1的个数。

12

#生成准确率的混淆矩阵(Confusion matrix)metrics.confusion_matrix(expected, predicted)

从混淆矩阵中可以看到,大部分的数字SVM的分类和预测都是正确的,但也有个别的数字分类错误,例如真实的数字2,SVM模型有一次错误的分类为1,还有一次错误分类为7。

1 如何用Python导入Excel以及csv数据集

Excel是一个二进制文件,它保存有关工作簿中所有工作表的信息

CSV代表Comma Separated Values 。这是一个纯文本格式,用逗号分隔一系列值

Excel不仅可以存储数据,还可以对数据进行操作

CSV文件只是一个文本文件,它存储数据,但不包含格式,公式,宏等。它也被称为平面文件

Excel是一个电子表格,将文件保存为自己的专有格式,即xls或xlsx

CSV是将表格信息保存为扩展名为.csv的分隔文本文件的格式

保存在excel中的文件不能被文本编辑器打开或编辑

CSV文件可以通过文本编辑器(如记事本)打开或编辑

excel中会有若干个表单,每个表单都会这些属性:?

行数(nrows) 列数(ncols) 名称(name) 索引(number)?

import xlrd //执行操作前需要导入xlrd库?

#读取文件?

excel = xlrd.open_workexcel("文件地址") //这里表格名称为excel,文件的地址可以从文件的属性中看到?

#读取表格表单数量?

sheet_num= excel.nsheets // sheet_num为变量,其值为表格表单数量?

#读取表格表单名称?

sheet_name = excel.sheet_names() // sheet_name为变量,其值为表格表单名称?

#如果想要看到上述两个变量,可以使用print()函数将它们打印出来?

#想要读取某个表单的数据,首先获取表单 excel.sheet_by_index(0)?

//表单索引从0开始,获取第一个表单对象 excel.sheet_by_name('xxx')?

// 获取名为”xxx”的表单对象 excel.sheets()?

// 获取所有的表单对象 获取单元格的内容:使用cell_value 方法 这里有两个参数:行号和列号,用来读取指定的单元格内容。?

第一行的内容是:sheet.row_values(rowx=0)?

第一列的内容是:sheet.col_values(colx=0)

CSV是英文Comma Separate Values(逗号分隔值)的缩写,文档的内容是由 “,” 分隔的一列列的数据构成的。在python数据处理中也经常用到。

import csv //执行操作前需要导入csv库?

#csv读取?

遍历其中数据 csv_file = csv.reader(open(‘文件地址’,’r’)) for x in csv_file print(x)

怎么在jupyter中导入数据集

在jupyter中导入数据集的方法:(推荐:jupyter使用教程)

首先打开本地Jupyter notebook,出现类似页面并进入网页端Home

网页端界面类似如下:

Jupyter notebook只能打开当前目录下的数据集,所以我们要先导入数据集,下面我们就来看一下导入数据集的方法。

1、在网页端界面点击“upload”按钮,在弹出的界面中选择要导入的数据集。

2、然后数据集出现在jupyter文件目录中,此时点击文件后的“upload”按钮即可将数据集导入。

更多python知识请关注python视频教程。

怎么在python中导入数据集

本文实例讲述了Python导入oracle数据的方法。分享给大家供大家参考。具体如下:

import cx_Oracle

dns_tns=cx_Oracle.makedsn("192.168.0.288",1521,"skynet")

print dns_tns

con = cx_Oracle.connect('alibaba', 'zhimakamen', dns_tns)

cur=con.cursor()

for index,line in enumerate(file("f2.csv")):

sql="""insert into iq_data_B011F8286A1B2000A

(field1,field2,field3,field4) values ("""

for fields in (line.split(",")):

sql=sql+"'"+fields+"',"

cur.execute(sql[:-1]+")")

con.commit()

con.close()

(责任编辑:IT教学网)

更多

推荐人物新闻文章