iT邦幫忙

0

關於SVM問題

  • 分享至 

  • xImage

import os
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn import svm

path = 'D:/AC_xlsx/training_set'
fs_all_file= os.listdir(path)
for file_name in fs_all_file:
complete_path = os.path.join(path, file_name)

    #依序讀取檔案路徑    
dataX = pd.read_excel(complete_path,
                sheet_name = ' X',
                header = None)
dataY = pd.read_excel(complete_path,
                sheet_name = 'Y',
                header = None)
dataZ = pd.read_excel(complete_path,
                sheet_name = 'Z',
                header = None)

x= pd.concat([dataX, dataY, dataZ], axis=1)

dataTR = pd.read_excel(complete_path,
                sheet_name = 'trrrrr',
                header = None)
y = dataTR.copy()

x_train, x_test, y_train, y_test = train_test_split(x,y,test_size=0.2,random_state=0)

clf=svm.SVC(kernel='linear',gamma='auto',C=10)
clf.fit(x_train,y_train)
clf.predict(x_test)
print(clf.score(x_train,y_train))
print(clf.score(x_test, y_test))

我跑出來結果是y should a 1d array,got an array of shape (376,3100) instead,請教要怎弄感謝觀看及回覆

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

0
只是個野人
iT邦新手 5 級 ‧ 2022-07-15 14:39:25
最佳解答

要丟入SVM需要np.array一維的資料
而上面

a = np.array([[1,2,3], [4,5,6]])
np.reshape(a, (1,6))

array([[1, 2, 3, 4, 5, 6]]) --結果依舊是二維

a = np.array([[1,2,3], [4,5,6]])
np.reshape(a, (6))

array([1, 2, 3, 4, 5, 6]) --這樣才是一維

0
海綿寶寶
iT邦大神 1 級 ‧ 2022-07-01 10:10:13

這篇來看
就是「錯誤地把 2D array 的資料傳給需要 1D array 的參數」

至於要如何把 2D array 的資料「轉」成 1D array
可以參考這篇
Google 這一堆

bobfriend iT邦新手 5 級 ‧ 2022-07-01 15:12:35 檢舉
ar_TR = np.array(dataTR)
n_rows, n_cols = ar_TR.shape
y = ar_TR.copy()
y = np.reshape(y, (1, n_rows * n_cols)
後來我添加這段仍然跑出這問題Found input variables with inconsistent numbers of samples: [470, 1]

我要發表回答

立即登入回答