私はこのチュートリアルの後に自分自身のデータを使ってSVMを書こうとしています。 https://pythonprogramming.net/preprocessing-machine-learning/?completed=/linear-svc-machine-learning-testing-data/ValueError:クラスの数は1より大きくなければなりません。 1を得ました
私はこのエラーを取得しておいてください。
ValueError: The number of classes has to be greater than one; got 1
私のコードは次のとおりです。
[[4, 0.001743713493735165, 0.6497055601752815, 90.795723552739275],
[4, 0.0460937435599832, 0.19764217920409227, 90.204147248752378],
[1, 0.001185534503063044, 0.3034913722821194, 60.348908179729023],
[1, 0.015455289770298222, 0.8380914254332884, 109.02120657826231],
[3, 0.0169961646358455, 0.2458746325894564, 136.83829993466398]]
マイ:Xのために使用されている機能の
header1 = ["Number of Sides", "Standard Deviation of Number of Sides/Perimeter",
"Standard Deviation of the Angles", "Largest Angle"]
header2 = ["Label"]
features = header1
features1 = header2
def Build_Data_Set():
data_df = pd.DataFrame.from_csv("featureVectors.csv")
#data_df = data_df[:3]
X = np.array(data_df[features].values)
data_df2 = pd.DataFrame.from_csv("labels.csv")
y = np.array(data_df2[features1].replace("Circle",0).replace("Triangle",1)
.replace("Square",2).replace("Parallelogram",3)
.replace("Rectangle",4).values.tolist())
return X,y
def Analysis():
test_size = 4
X,y = Build_Data_Set()
print(len(X))
clf = svm.SVC(kernel = 'linear', C = 1.0)
clf.fit(X[:-test_size],y[:-test_size])
correct_count = 0
for x in range(1, test_size+1):
if clf.predict(X[-x])[0] == y[-x]:
correct_count += 1
print("Accuracy:", (correct_count/test_size) * 100.00)
私の配列はこのようになりますYで使用されるラベルの配列は次のようになります:
['Square', 'Square', 'Circle', 'Circle', 'Triangle']
プログラムが動作していないことを知っていたので、私は今までに5セットのデータしか使用していません。
私は役に立つ場合に備えて、自分のcsvファイルに値の写真を添付しました。
Printing X.shape and y.shape and showing the full error
行がエラーを与えますか?そして 'print(len(X))'を実行すると、 'X.shape'と' y.shape'を出力し、出力を教えてください。 – exp1orer
@ exp1orer投稿を編集しました。あなたがリクエストしたすべての情報は、最後に添付された画像になります。 –
ありがとう、私の答えを見てください。 – exp1orer