【问题标题】:Standardized data of SVM - Scikit-learn/ PythonSVM 的标准化数据 - Scikit-learn/Python
【发布时间】:2021-01-15 23:40:30
【问题描述】:

这适用于必须使用 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 方法;放 随机状态为 30;并进行分层抽样。构建另一个 SVM 来自 X_train 集和 Y_train 标签的分类器,具有默认值 参数。将模型命名为 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))

【问题讨论】:

    标签: python scikit-learn


    【解决方案1】:

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

    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))
    

    【讨论】:

      【解决方案2】:

      尝试以下。似乎工作正常。

      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))
      

      【讨论】:

        猜你喜欢
        • 2013-01-19
        • 2015-06-26
        • 2012-12-06
        • 2014-03-31
        • 2012-10-30
        • 2018-08-12
        • 1970-01-01
        • 2015-04-07
        • 2019-01-14
        相关资源
        最近更新 更多