Python 分类:推特情绪分析-步骤顺序
我目前正在进行推特情绪分析,对于步骤的正确顺序有一些问题。请假设数据已经进行了预处理并进行了相应准备。因此,我将这样做:Python 分类:推特情绪分析-步骤顺序,python,machine-learning,classification,sentiment-analysis,text-classification,Python,Machine Learning,Classification,Sentiment Analysis,Text Classification,我目前正在进行推特情绪分析,对于步骤的正确顺序有一些问题。请假设数据已经进行了预处理并进行了相应准备。因此,我将这样做: 使用列车测试\u分割(80:20比率)中止测试 数据集 矢量化x_train,因为tweet不是数字 在接下来的步骤中,我将确定最佳分类器。请假设这些已经进口。所以我会继续说: 超参数化(网格搜索),包括交叉验证方法。 在这一步中,我想确定每种方法的最佳参数 分类器。KNN的代码如下: 比较分类器的准确度(取决于最佳超参数) 选择最好的分类器 获取保留的测试数据集(来自训练测
列车测试\u分割
(80:20比率)中止测试
数据集x_train
,因为tweet不是数字训练测试分割()
),并对测试数据使用最佳分类器这是正确的方法还是你会建议改变一些东西(例如单独进行交叉验证而不是在超参数化中)?作为最后一步测试测试数据有意义吗?还是我应该更早地进行测试以评估未知数据集的准确性?有很多方法可以做到这一点,人们对此有强烈的意见,我并不总是确信他们完全理解他们的主张 TL;博士:你的方法看起来很棒,你问的问题也很有道理 话虽如此,以下是一些需要考虑的事情:
但是,是的,你看起来很好。我认为你在思考自己在做什么,这已经让你领先了一步。非常感谢你详细的回答!如前所述,我计划使用CV来改进超参数调优,并且只使用以前分割的训练数据集。有没有办法在不考虑不同褶皱的情况下调整超参数?我刚刚开始学习ML,在我看来,超参数调优将从CV中受益是合乎逻辑的。我认为您认为超参数调优将从CV中受益是正确的。我的观点是,5倍CV是80:20列车试验分割验证x 5;因此,我认为使用列车测试(超参数调优(交叉验证(…))不会给您带来好处。可能只是使用超参数调优(交叉验证(…))。否则,在训练测试的测试部分,您将丢失20%的训练数据,然后每次折叠将丢失20%*80%(CV)。如果你有足够的数据,我想没关系。但对于我的用例来说,数据太复杂了
model = KNeighborsClassifier()
n_neighbors = range(1, 10, 2)
weights = ['uniform', 'distance']
metric = ['euclidean', 'manhattan', 'minkowski']
# define grid search
grid = dict(n_neighbors=n_neighbors, weights=weights ,metric=metric)
cv = RepeatedStratifiedKFold(n_splits=10, n_repeats=3, random_state=1)
grid_search = GridSearchCV(estimator=model, param_grid=grid, n_jobs=-1, cv=cv, scoring='accuracy',error_score=0)
grid_result = grid_search.fit(train_tf, y_train)
# summarize results
print("Best: %f using %s" % (grid_result.best_score_, grid_result.best_params_))
means = grid_result.cv_results_['mean_test_score']
stds = grid_result.cv_results_['std_test_score']
params = grid_result.cv_results_['params']
for mean, stdev, param in zip(means, stds, params):
print("%f (%f) with: %r" % (mean, stdev, param))