![](/img/trans.png)
[英]Why are the regions/decision boundaries overlapping with multi-class classification using SVM in sci-kit?
[英]Using prepared data for Sci-kit classification
我正在嘗試使用Sci-kit學習python庫來分類一堆網址,以確定是否存在與用戶配置文件匹配的特定關鍵字。 用戶具有姓名,電子郵件地址......以及分配給他們的網址。 我創建了一個txt,每個鏈接上的每個配置文件數據匹配的結果都是這樣的格式:
Name Email Address
0 1 0 =>Relavent
1 1 0 =>Relavent
0 1 1 =>Relavent
0 0 0 =>Not Relavent
其中0或1表示在頁面上找到屬性(每行是一個網頁)如何將此數據提供給sci-kit以便它可以使用它來運行分類器? 我看到的例子都有來自預定義的sch-kit庫的數據,例如數字或虹膜,或者是以我已有的格式生成的。 我只是不知道如何使用我必須提供給庫的數據格式
以上是一個玩具示例,我有比3更多的功能
所需的數據是具有形狀(n_samples, n_features)
的numpy
數組 (在這種情況下為“矩陣” (n_samples, n_features)
。
使用numpy.genfromtxt
將csv文件讀取為正確格式的簡單方法。 也參考這個帖子 。
讓csv文件的內容(比如當前工作目錄中的file.csv
)為:
a,b,c,target
1,1,1,0
1,0,1,0
1,1,0,1
0,0,1,1
0,1,1,0
要加載它我們做
data = np.genfromtxt('file.csv', skip_header=True)
skip_header
設置為True
,以防止讀取標題列( a,b,c,target
行)。 有關更多詳細信息,請參閱numpy的文檔 。
加載數據后,需要根據輸入數據格式進行一些預處理。 預處理可以是分割輸入和目標(分類)或將整個數據集拆分為訓練和驗證集(用於交叉驗證)。
要從輸出(目標矢量)中分割輸入(特征矩陣),我們這樣做
features = data[:, :3]
targets = data[:, 3] # The last column is identified as the target
對於上面給出的CSV數據,數組將使用如下所示:
features = array([[ 0, 1, 0],
[ 1, 1, 0],
[ 0, 1, 1],
[ 0, 0, 0]]) # shape = ( 4, 3)
targets = array([ 1, 1, 1, 0]) # shape = ( 4, )
現在將這些矩陣傳遞給估計器對象fit
函數。 如果你正在使用流行的svm分類器那么
>>> from sklearn.svm import LinearSVC
>>> linear_svc_model = LinearSVC()
>>> linear_svc_model.fit(X=features, y=targets)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.