【问题标题】:Getting an error "TypeError: an integer is required" on SVM在 SVM 上收到错误“TypeError: an integer is required”
【发布时间】:2022-01-08 13:15:13
【问题描述】:

我对编码还很陌生,所以我对我的代码的实际含义和指示有点困惑,如果这是一个愚蠢的问题或者我很难理解答案,非常抱歉!

这是我遇到问题的代码:

krn= ['linear', 'poly', 'rbf', 'sigmoid']
rng_C = np.arange(1,101,20)
rng_degree=np.arange(2,5)
rng_ga= ['auto', 'scale']
rng_m=np.arange(0.001,10,0.5)
best_score=0
for i in krn:
    for j in rng_C:
        for k in rng_ga:
            for m in rng_m:
                SVModel=SVC(kernel=i, C=j, degree=k, gamma=m)
                SVModel.fit(x_train, y_train)
                acc_score= accuracy_score(y_test, SVModel.predict(x_test))
                if best_score<acc_score:
                    best_score=acc_score
                    bi=i
                    bj=j
                    bk=k
                    bm=m
print(best_score, bi, bj, bk, bm)

我得到的错误屏幕是:

TypeError                                 Traceback (most recent call last)
<ipython-input-9-5eb9a5279e65> in <module>
      5             for m in rng_m:
      6                 SVModel=SVC(kernel=i, C=j, degree=k, gamma=m)
----> 7                 SVModel.fit(x_train, y_train)
      8                 acc_score= accuracy_score(y_test, SVModel.predict(x_test))
      9                 if best_score<acc_score:

~\anaconda3\lib\site-packages\sklearn\svm\_base.py in fit(self, X, y, sample_weight)
    224 
    225         seed = rnd.randint(np.iinfo('i').max)
--> 226         fit(X, y, sample_weight, solver_type, kernel, random_seed=seed)
    227         # see comment on the other call to np.iinfo in this file
    228 

~\anaconda3\lib\site-packages\sklearn\svm\_base.py in _dense_fit(self, X, y, sample_weight, solver_type, kernel, random_seed)
    275         self.support_, self.support_vectors_, self._n_support, \
    276             self.dual_coef_, self.intercept_, self._probA, \
--> 277             self._probB, self.fit_status_ = libsvm.fit(
    278                 X, y,
    279                 svm_type=solver_type, sample_weight=sample_weight,

sklearn\svm\_libsvm.pyx in sklearn.svm._libsvm.fit()

TypeError: an integer is required

从我目前所读到的内容来看,问题似乎是我以某种方式获得了一个字符串,并且它在我实际需要一个整数的地方获得了输入。我不确定如何做到这一点,以及我将在哪里添加解决问题所需的潜在代码。如果有人有任何见解,我将不胜感激!

【问题讨论】:

标签: python scikit-learn integer typeerror svm


【解决方案1】:

您在for k in rng_ga: 行中混淆了rng_garng_degree,因此degreek 在传递到SVModel=SVC(kernel=i, C=j, degree=k, gamma=m) 行时变为字符串"auto"

【讨论】:

    猜你喜欢
    • 2016-11-17
    • 1970-01-01
    • 1970-01-01
    • 2019-08-27
    • 1970-01-01
    • 2018-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多