我用初始和1000点产生的特征(对象的概率)为约11000〜影片。这些视频已经被分类按流派,我想的SVM预测视频属于哪个流派。
我想SVM适用于这些特征向量,但每次我到目前为止阅读教程使用从train_test_split
的sklearn.model_selection
方法。
如何我的数据看起来:
videoId,feature1,feature2,...,feature1000
的格式Training/education.txt
培训和Testing/education.txt
进行测试。每个文件包含属于videoId
s到所述流派。我是新来的数据的科学像熊猫库,sklearn等,所以我失去了我应该怎么准备这个数据。我一直在关注this guide:
import pandas as pd
bankdata = pd.read_csv("D:/Datasets/bill_authentication.csv")
X = bankdata.drop('Class', axis=1)
y = bankdata['Class']
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.20)
我将如何去获得qazxsw POI,qazxsw POI,qazxsw POI,qazxsw POI与我有什么?我不能使用像因为我的数据是如何在目前成立X_train
方法。
所有的教程,建议您从X_test
使用y_train
的原因是因为他们认为你将要评估你的学习模型的性能,并可能调整其超参数之前,你终于可以用它来生成您的测试数据集的预测。
这种做法被称为留出“交叉验证”设置。要做到这一点,你离开你的测试设置不变暂时的,居然在你的训练集的行的20%分离出来的。你训练你的训练集的行的80%,你的模型,并使用该模型来生成对你的训练集,剩下的20%的预测。
您可以选择一个指标,如y_test
,来判断你的模型的性能。通常情况下,它在这一点上,你会想尝试演模型的train_test_split
不同的值进行试验,看其对验证集(训练集的,去年20%)得分是否有所改善。
该train_test_split
方法只是对你的训练数据分成这些80/20部分的简单方法。我建议你不要跳过此步骤。原因是,如果你要改变你的模型或观察它如何执行你的实际测试集后的超参数,你会失去知道如何模型将在全新的,真实世界的数据进行任何基础。
这就是所谓的“过度拟合测试集”,它是实践的一个常见的错误,导致机器学习模型,一组先前收集的数据的表现非常好,但(它们的创造者的惊讶),最终的表现相当可怕在这些模型看时,他们终于投产了真实的数据。
总之事情了,这个想法是,你:
顺便说一句,该方法sklearn.model.selection
的Sklearn的命名有点令人迷惑,因为该方法的目的是验证组的创建。 (accuracy似乎我是一个更直观的名字......)
下面是步骤,在代码中,我想你想跟着给你的特殊情况(在多个.txt文件数据分割):
hyperparameters
train_test_split
列,然后串联所有这些到一个数据帧:train_test_split
train_val_split
或类似的东西)和下降import pandas as pd
import numpy as np
from sklearn.metrics import accuracy_score
from sklearn.svm import SVC
from sklearn.model_selection import train_test_split
X_edu = pd.read_csv('Training/education.txt')
X_hor = pd.read_csv('Training/horror.txt')
...
列(因为它不会出现,这是一个预测功能):Genre
train_dfs = [X_edu, X_hor, ...]
genres = ['edu', 'hor', ...]
for i, genre in enumerate(genres):
train_dfs[i]['Genre'] = genre
X = pd.concat[train_dfs].reset_index(drop=True) # reset the index so each row has a unique index
# important so we can be sure we can properly match each row with its label
创建您的培训和验证集(不错的奖金:Genre
自动洗牌整个训练数据框的行拆分之前,所以你不必担心你的验证组不被某些类型):videoID
y = X['Genre']
X = X.drop(['Genre', 'videoID'], axis=1)
并就train_test_split
预测:train_test_split
X_train, X_val, y_train, y_val = train_test_split(X, y, test_size = 0.20)
X_train
不同的值,并重复步骤(5)和(6)以上。当你满意你的车型的性能,现在是时候去生成你的实际测试数据预测的时间。
您可以在测试的.csv文件加载每个流派聚集在一起将他们都就像你做你的训练数据上面一个数据帧:X_val
而这个测试集的准确度得分应该给你最真实的估计可能如何你的模型会过得它应该被要求做一个全新的视频它从未见过的预测。