【发布时间】:2020-08-12 13:58:07
【问题描述】:
我想在 n=3000000 和 12 列的数据集上实现分类模型。我有一个问题,因为下班后它很慢,我什么也没得到,你有建议让它跑得更快吗?
谢谢
df = pd.DataFrame(np.random.randint(0,100,size=(3000000, 12)), columns=list('ABCDEFGHIJKL'))
X=df.drop(['L'], axis=1)
y=df['L']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
parameters = {'n_neighbors':np.arange(1,30)}
grid=GridSearchCV(KNeighborsClassifier(),parameters,cv=5)
grid.fit(X_train, y_train)
【问题讨论】:
-
你能介绍一下班的数量吗?他们在数据集中的比率?此外,使用 1-30 的 KNN 非常高。相反,请尝试用完 1,10,30。如果你得到 10。然后尝试 5、10、15 及类似
-
您在 300 万行数据上对
fit进行了 150 次不同的调用,分类器占用大量内存空间,没有并行化。那会很慢。 -
我不太清楚你的问题,但我生成了一个随机的 int64 数据集,有 12 列,每列在数据集中具有相同的权重。
-
@G.Anderson,有没有办法更快,但我根本无法处理这种大小的数据集。
-
正如@MehulGupta 所说,
'n_neighbors':np.arange(1,30)对于您的GridSearch而言搜索空间太大,请按照他们的建议尝试缩小范围;做一个较低的cv=数字,更改n_jobs以允许并行处理作为建议的一个答案
标签: python pandas scikit-learn classification large-data