簡體   English   中英

我想為我的機器學習算法考慮python中數據的功能集(向量)。 我該怎么做?

[英]I would like to consider a feature set(vector) for a data in python for my machine learning algorithm. How can I do it?

我有以下形式的數據

   Class           Feature set list
   classlabel1 -    [size,time]      example:[6780.3,350.00]
   classlabel2 -    [size,time]
   classlabel3 -    [size,time]
   classlabel4 -    [size,time]

如何將這些數據保存在Excel工作表中,以及如何使用此功能集訓練模型? 目前,我正在研究SVM分類器。

我嘗試將功能集列表保存在數據框中,然后將此數據保存到csv文件中。 但是大小和時間分成兩個不同的列。

數據幀通過以下方式保存在csv文件中:

col 0    col1        col2
62309   396.5099154  label1

我想對組合的特征向量[大小,時間]進行訓練和測試。 有可能嗎,這是正確的方法嗎? 如果有可能,我該怎么辦?

由於大小和時間是不同的功能,因此您應該將它們分為2個不同的列,以便您的模型可以分別為它們設置權重,即

# data.csv
size      time      label
6780.3    3,350.00  classLabel1
...

如果要將數據轉換為上述格式,可以使用pandas.read_excel並使用ast將字符串列表轉換為python list對象。

import pandas as pd
import ast

df = pd.read_excel("data.xlsx")
size_time = [(ast.literal_eval(x)[0], ast.literal_eval(x)[1]) for x in df["Feature set list"]]

size = [x[0] for x in size_time]                                                                                                                                                                          
time = [x[1] for x in size_time]                                                                                                                                                                          
label = df["Class"]  

new_df = pd.DataFrame({"size":size, "time":time, "label":label})
# This will result in the DataFrame below.
#   size  time        label
# 6780.3 350.0  classlabel1

# Save DataFrame to csv
new_df.to_csv("data_fix.csv")

# Use it
x = new_df.drop("label", axis=1)
y = new_df.label

# Further data preparation, such as split the dataset
# into train and test set, etc.
...

希望這可以幫助

首先回答您的問題:

我想對組合的特征向量[大小,時間]進行訓練和測試。 有可能嗎,這是正確的方法嗎? 如果有可能,我該怎么辦?

合並這兩種方法不是正確的做法,因為它們都處於兩個不同的規模(如果它們確實是顧名思義的話),而且將它們合並將導致它們將提供的信息丟失,因此它們是兩個完全獨立的功能任何ML監督算法。 因此,我建議分開對待這兩個功能,而不要合並為一個。

現在讓我們進入下一部分:

如何將這些數據保存在Excel工作表中,以及如何使用此功能集訓練模型? 目前,我正在研究SVM分類器。

  1. 存儲數據:在我看來,您可以以所需的任何格式存儲數據,但是我更喜歡以csv格式存儲數據,因為它方便並且數據文件的加載速度更快。

sample_data.csv

 size,time,class_label 100,150,label1 200,250,label2 240,180,label1 

以下是用於從csv讀取數據和訓練SVM的代碼:

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn import preprocessing
from sklearn.svm import SVC
from sklearn.metrics import accuracy_score

# loading data
data = pd.read_csv("sample_data.csv", error_bad_lines=True,
    warn_bad_lines=True)

# Dividing into dependent and independent features
Y = data.class_label_col.values
X = data.drop("class_label_col", axis=1).values

# encode the class column values
label_encoded_Y = preprocessing.LabelEncoder().fit_transform(list(Y))

# split training and testing data
x_train,x_test,y_train,y_test=train_test_split(X,label_encoded_Y,
train_size=0.8,
test_size=0.2)

# Now use the whichever trainig algo you want
clf = SVC(gamma='auto')
clf.fit(x_train, y_train) 

# Using the predictor
y_pred = clf.predict(x_test)

暫無
暫無

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

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