SVM

1

import matplotlib.pyplot as plt
import numpy as np
from sklearn import datasets
from sklearn import svm
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

# 加载数据
digits = datasets.load_digits()

# # 把数据所代表的图片显示出来
# images_and_labels = list(zip(digits.images, digits.target))
# plt.figure(figsize=(8, 6), dpi=200)
# for index, (image, label) in enumerate(images_and_labels[:8]):
#     plt.subplot(2, 4, index + 1)
#     plt.axis('off')
#     plt.imshow(image, cmap=plt.cm.gray_r, interpolation='nearest')
#     plt.title('Digit: %i' % label, fontsize=20)

# 把数据分成训练数据集和测试数据集
Xtrain, Xtest, Ytrain, Ytest = train_test_split(digits.data, digits.target, test_size=0.30, random_state=2)

# 使用支持向量机来训练模型
clf = svm.SVC(gamma=0.001, C=100., probability=True)
clf.fit(Xtrain, Ytrain)

# 评估模型的准确度
Ypred = clf.predict(Xtest)
accuracy = accuracy_score(Ytest, Ypred)
score = clf.score(Xtest, Ytest)

print(accuracy)

2

import numpy as np

#载入数据
from sklearn import datasets
digits = datasets.load_digits()
X,y = digits.data, digits.target

# #画图展示
# import matplotlib.pyplot as plt
# #此处注意,k,img代表的数字在1-10之间,故enmerate()需要增加一个start=1的参数
# for k,img in enumerate(range(10),start=1):
#     plt.subplot(2, 5, k)
#     plt.imshow(digits.images[img],cmap='binary',interpolation='none')
# plt.show()
# print(X.shape)
# #X[0]
# from scipy.stats import itemfreq
# print(itemfreq(y))

#数据区分测试集和训练集,并将数据标准化
from sklearn.model_selection import train_test_split, cross_val_score
from sklearn.preprocessing import MinMaxScaler
#30% 用作 test
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=101) 

scaling = MinMaxScaler(feature_range=(-1, 1)).fit(X_train)
X_train = scaling.transform(X_train)
X_test = scaling.transform(X_test)

from sklearn.svm import SVC

learning_algo = SVC(kernel='linear', class_weight='balanced')
#交叉验证
cv_performance = cross_val_score(learning_algo, X_train, y_train, cv=5)
test_performance = learning_algo.fit(X_train, y_train).score(X_test, y_test)
print ('Cross-validation accuracy score: %0.3f, test accuracy score: %0.3f' % (np.mean(cv_performance),test_performance))
Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐