本文共 1846 字,大约阅读时间需要 6 分钟。
# -*- coding: utf-8 -*-'''花的种类的SVM'''from sklearn import svm, datasetsfrom sklearn.model_selection import train_test_splitfrom sklearn.metrics import accuracy_scoreimport matplotlib.pyplot as pltimport numpy as npiris = datasets.load_iris()dat_data = iris.datadat_label = iris.targetdata = []for x1, x2 in zip(dat_data, dat_label): data.append(list(x1))j = 0for i in dat_label: data[j].append(i) j = j+1print(data)a = 0for i in data: a = a + 1print('花的总样本数:{}'.format(a))'''split(数据,分割位置,轴(axis)=1(纵向分割) or 0(横向分割))这里的分割位置是指 0、1、2、3 列为一部分,第 4 列为另一部分进行分割。当axis = 1 时,按列分割当axis = 0 时,按行分割'''x, y = np.split(data, (4,), axis=1)# 行取全部,列取前3列,“:3”的意思是指1、2、3列。x = x[:, :2]x_trin, x_test, y_trin, y_test = train_test_split(x, y, random_state=np.random.randint(0, 300), train_size=0.6)'''参数解释:sklearn.model_selection.train_test_split()train_data:所要划分的样本特征集train_target:所要划分的样本结果test_size:样本占比,如果是整数的话就是样本的数量,如果赋予值的话取其补的结果来计算。random_state:是随机数的种子。随机数种子:其实就是该组随机数的编号,在需要重复试验的时候,保证得到一组一样的随机数。比如你每次都填1,其他参数一样的情况下你得到的随机数组是一样的。但填0或不填,每次都会不一样。随机数的产生取决于种子,随机数和种子之间的关系遵从以下两个规则:种子不同,产生不同的随机数;种子相同,即使实例不同也产生相同的随机数。'''clf = svm.SVC(C=0.8, kernel='rbf', gamma=20, decision_function_shape='ovr')clf.fit(x_trin, y_trin.ravel())# print(clf.score(x_trin, y_trin))y_hat = clf.predict(x_trin)b = 0for i in x_trin: b = b + 1print('训练集的总样本数:{}'.format(b))print('训练集正确分类的样本数:{}'.format(accuracy_score(y_hat, y_trin, normalize=False)))print('训练集的正确率:{}'.format(accuracy_score(y_hat, y_trin, normalize=True)))# print(clf.score(x_test, y_test))y_hat1 = clf.predict(x_test)c = 0for i in x_test: c = c + 1print('测试集的总样本数:{}'.format(c))print('测试集正确分类的样本数:{}'.format(accuracy_score(y_hat1, y_test, normalize=False)))print('测试集的正确率:{}'.format(accuracy_score(y_hat1, y_test, normalize=True)))
我曾经跨过山和大海,也穿过人山人海,我曾经拥有着的一切,转眼都飘散如烟,我曾经失落失望失掉所有方向,直到看见平凡才是唯一的答案。 ——韩寒《平凡之路》
转载地址:http://vfsci.baihongyu.com/