簡體   English   中英

如何正確格式化數據以運行SVM算法?

[英]How do I format my data correctly for running an SVM algorithm?

Jupyter NotebookPyCharm我可以使用虹膜數據運行下面的SVM算法,沒有任何問題。 但是,當我用我自己的數據換掉虹膜數據時,在Jupyter Notebook我得到:

內核似乎已經死了。 它會自動重啟。

在PyCharm我得到:

進程以退出代碼139結束(由信號11中斷:SIGSEGV)

這很好用:

from sklearn.datasets import load_iris
iris=load_iris()
# iris
from sklearn import datasets
from sklearn import metrics
from sklearn.svm import SVC
# load the iris datasets
dataset = datasets.load_iris()
# fit a SVM model to the data
model = SVC()
model.fit(dataset.data, dataset.target)
print(model)

當我嘗試用我自己的數據集替換虹膜數據時,問題就出現了,我認為這個數據集格式正確。 您可以在此處獲取數據集(個人級別)

#data = pd.io.stata.read_stata('individual.dta')
#data.to_csv('individual.csv')
ind = pd.read_csv('individual.csv')
ind = ind.dropna()
train, test = train_test_split(ind, test_size=0.2)
df = pd.DataFrame()
df['patience'] = train['patience']
df['risktaking'] = train['risktaking']
df['posrecip'] = train['posrecip']
df['negrecip'] = train['negrecip']
df['altruism'] = train['altruism']
df['trust'] = train['trust']
index = train['Unnamed: 0']
dataset = {}
data = np.ascontiguousarray(df.values) 
#print(dataset['data'].flags) #shows C-Contiguous as TRUE
dataset['data'] = data
index = index.values
dataset['target'] = index

from sklearn.svm import SVC
X = dataset['data']
y = dataset['target']

clf = SVC(gamma='auto')
clf.fit(X, y) 

print(clf.predict([[0.04717605, 1.0202034, 1.0202034, -0.3671751, -0.1399527, 1.6797541]]))

當我將虹膜數據集與我制造的數據集進行比較時,它們在類型方面看起來是相同的 - 顯然尺寸不同,但這不應該影響SVM模型。

我認為構造數組的方式肯定有問題,因此通過SVC()改變了它們的解釋。 我之前設置'data'和'target'的dict()屬性時遇到了麻煩。

如您所見,虹膜數據集調用“dataset.data,dataset.target”,而我必須求助於“dataset ['data'],dataset ['target']”。

我把SVC()的兩個版本放在一起,這樣你就可以看到它們對虹膜數據都很好,但是它們都不太喜歡我的數據。

感謝幫助。 代碼評論家:如果你真的解決了這個問題,你將只會有所幫助。 花生畫廊的評論沒用。

這是我通過前面的答案找到的解決方案我能夠成功應用。

現在,答案並沒有完全解決我在這個例子中遇到的問題 - 主要是內核停止響應。 我仍然不知道為什么我的嘗試沒有成功。

但是,提供的鏈接和答案允許我以適當的方式組織我的數據集並將其應用於SVC模型。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM