ValueError: X.shape[1] = 77 должно быть равно 691, количеству выборок во время обучения.

Я очень новичок в глубоком обучении и провожу простое обучение SVM с предварительно вычисленным ядром. И вот уже почти 5 часов борюсь с этой ошибкой..

from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.ensemble import RandomForestClassifier
from sklearn import svm
from sklearn.tree import DecisionTreeClassifier, export_graphviz
from sklearn.model_selection import train_test_split
from sklearn.metrics import confusion_matrix
from sklearn.model_selection import KFold
from sklearn.metrics import accuracy_score
import numpy as np
import pandas as pd

kf = KFold(n_splits=10, random_state=123, shuffle=True)

acc = np.zeros(10) 
accset=np.zeros(5)

df = pd.read_csv('D:\\data.csv')

df_X = df.loc[:, df.columns != 'grade']
df_y = df['grade']

train_X, test_X, train_y, test_y = \
train_test_split(df_X, df_y, test_size=0.3,\
                     random_state=1234) 

model=svm.SVC(kernel='precomputed')

i = 0    
for train_index, test_index in kf.split(df_X):
    print("fold:", i)
    
    train_X, test_X = df_X.iloc[train_index], df_X.iloc[test_index]
    train_y, test_y =  df_y.iloc[train_index], df_y.iloc[test_index]

    gram_train = np.dot(train_X, train_X.T)


    model.fit(gram_train, train_y)
    
    gram_test = np.dot(test_X, test_X.T)

    pred_y = model.predict(gram_test)
  
    acc[i] = accuracy_score(test_y, pred_y)
    print('Accuracy : {0:3f}'.format(acc[i]))
    i += 1

И это ошибка, которую я получил

ValueError: X.shape[1] = 77 должно быть равно 691, количеству выборок во время обучения.

И здесь возникает ошибка

pred_y = model.predict(gram_test)

не могли бы вы помочь мне, что не так с этим кодом, пожалуйста?..

0 ответов

Другие вопросы по тегам