ValueError: Несоответствие буфера dtype, ожидаемое 'float64_t', но полученное 'float' с помощью sci-kit learn - PullRequest
0 голосов
/ 10 ноября 2018

Я пытаюсь создать классификатор SVM с помощью Sci-Kit Learn с набором данных, состоящим из 69 столбцов, из которого выводится последний столбец. Каждый столбец имеет число с плавающей запятой, состоящее из евклидова расстояния, тогда как выходные данные являются целыми числами. Ниже приведен письменный код:

import numpy as np
import os
import matplotlib.pyplot as plt
from sklearn.svm import SVC
from sklearn.model_selection import train_test_split
from numpy import float64

os.environ["PATH"] += os.pathsep + 'C:/Program Files (x86)/Graphviz2.38/bin/'

training=np.genfromtxt("Data/ck-train.csv", delimiter=",", skip_header=1)
model_svc = SVC(kernel='linear', probability=True, tol=1e-3)
score_list=[]
full_size=len(training)
tr_size=int(round(full_size*0.8,0))
ts_size=int(round(full_size*0.2))
print("Training Sample Size: %s samples " %tr_size)
print("Testing Sample Size: %s samples " %ts_size)
print("Total: ", full_size)

training_input=np.zeros((full_size,68))
training_output=np.zeros((full_size))

def create_sets():

    np.random.shuffle(training)

    for i in range(0,full_size):
        training_input[i]=training[i][:-1]
        training_output[i]=training[i][-1]

    for i in range(0,full_size):
        normTraining=np.linalg.norm(training[i][:-1])
        training_input[i]=training[i][:-1]/normTraining

    X_train, X_test, y_train, y_test = train_test_split(training_input, training_output, test_size = 0.20)

    return X_train, X_test, y_train, y_test

### Training ###

def training_svm():
    for i in range(0,10):
        print("Starting training: round ", (i+1))
        tr_in, ts_in, tr_out, ts_out = create_sets()
        model_svc.fit(tr_in, tr_out)
        print("Getting score: round ", (i+1))
        score = model_svc.score(ts_in, ts_out)
        print("Score: ", score)
        score_list.append(score)

    print("Mean score: ", np.mean(score_list))

training_svm()

Я не знаю почему, но когда я пытаюсь обучить модель, я получаю эту ошибку:

File "sklearn\svm\libsvm.pyx", line 54, in sklearn.svm.libsvm.fit
ValueError: Buffer dtype mismatch, expected 'float64_t' but got 'float'

Может кто-нибудь объяснить, чего мне не хватает? Заранее благодарю за помощь.

...