繁体   English   中英

SVM的标准化数据——Scikit-learn/Python

[英]Standardized data of SVM - Scikit-learn/ Python

这是用于必须使用 SVM 方法来提高模型准确性的作业。

有3部分,写了下面的代码

import sklearn.datasets as datasets
import sklearn.model_selection as ms
from sklearn.model_selection import train_test_split


digits = datasets.load_digits();
X = digits.data
y = digits.target

X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=30, stratify=y)

print(X_train.shape)
print(X_test.shape)

from sklearn.svm import SVC
svm_clf = SVC().fit(X_train, y_train)
print(svm_clf.score(X_test,y_test))

但在此之后,问题如下

执行digits.data 的标准化并将转换后的数据存储在变量digits_standardized 中。

提示:使用 sklearn.preprocessing 中所需的实用程序。 再一次,将digits_standardized 拆分为两个名称X_train 和X_test。 此外,将digits.target 分成两组Y_train 和Y_test。

提示:使用 sklearn.model_selection 中的 train_test_split 方法; 将 random_state 设置为 30; 并进行分层抽样。 使用默认参数从 X_train 集和 Y_train 标签构建另一个 SVM 分类器。 将模型命名为 svm_clf2。

评估测试数据集的模型准确性并打印其分数。

在上面的代码之上,尝试编写此代码,但似乎失败了。 任何人都可以帮助如何标准化数据。

std_scale = preprocessing.StandardScaler().fit(X_train)
X_train_std = std_scale.transform(X_train)
X_test_std  = std_scale.transform(X_test)

svm_clf2 = SVC().fit(X_train, y_train)
print(svm_clf.score(X_test,y_test))

尝试了以下。 似乎正在工作。

import sklearn.datasets as datasets
import sklearn.model_selection as ms
from sklearn.model_selection import train_test_split

from sklearn.preprocessing import StandardScaler


digits = datasets.load_digits();


X = digits.data
scaler = StandardScaler()
scaler.fit(X)
digits_standardized = scaler.transform(X)

y = digits.target

X_train, X_test, y_train, y_test = train_test_split(digits_standardized, y, random_state=30, stratify=y)

#print(X_train.shape)
#print(X_test.shape)


from sklearn.svm import SVC
svm_clf2 = SVC().fit(X_train, y_train)
print("Accuracy ",svm_clf2.score(X_test,y_test))

试试这个,因为最终代码包括所有任务

import sklearn.datasets as datasets
import sklearn.model_selection as ms
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.svm import SVC



digits = datasets.load_digits()
X = digits.data
y = digits.target

X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=30, stratify=y)

print(X_train.shape)
print(X_test.shape)

svm_clf = SVC().fit(X_train, y_train)
print(svm_clf.score(X_test,y_test))



scaler = StandardScaler()
scaler.fit(X)
digits_standardized = scaler.transform(X)

X_train, X_test, y_train, y_test = train_test_split(digits_standardized, y, random_state=30, stratify=y)


svm_clf2 = SVC().fit(X_train, y_train)
print(svm_clf2.score(X_test,y_test))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM