В случае, если вы идете с бинарной классификации только, вы должны тщательно выбирать flip_y
. Если, например, вы выбираете flip_y
, чтобы быть высоким, это означает, что вы переворачиваете почти каждую метку, что делает проблему проще !. (сохраняется консистенция)
Следовательно, в двоичной классификации flip_y
действительно является min(flip_y,1-flip_y)
, а установка его как 0,5 сделает классификацию очень трудной.
Другая вещь, которую вы можете сделать: после создания данных, сделайте сокращение размера, используя PCA:
from sklearn.cross_validation import cross_val_score
from sklearn.datasets import make_classification
from sklearn.decomposition import PCA
from sklearn.linear_model import LogisticRegression
clf = LogisticRegression()
X, y = make_classification(n_samples=10000, n_informative=18,n_features=20, flip_y=0.15, random_state=217)
print cross_val_score(estimator=clf, X=X, y=y, scoring='accuracy', cv=4)
#prints [ 0.80287885 0.7904 0.796 0.78751501]
pca = PCA(n_components=10)
X = pca.fit_transform(X)
print cross_val_score(estimator=clf, X=X, y=y, scoring='accuracy', cv=4)
#prints [ 0.76409436 0.7684 0.7628 0.75830332]
вы можете уменьшить n_components
, чтобы получить еще более плохие результаты, имея при этом исходный ряд особенностей:
pca = PCA(n_components=1)
X = pca.fit_transform(X)
X = np.concatenate((X, np.random.rand(X.shape[0],19)),axis=1) #concatenating random features
cross_val_score(estimator=clf, X=X, y=y, scoring='accuracy', cv=10)
print cross_val_score(estimator=clf, X=X, y=y, scoring='accuracy', cv=4)
#prints [ 0.5572 0.566 0.5552 0.5664]
Получение точности менее 50% является «жестким» - даже тогда, когда вы берете случайные векторы, продолжительность точности еще 0,5:
X = np.random.rand(10000,20)
print np.average(cross_val_score(estimator=clf, X=X, y=y, scoring='accuracy', cv=100))
#prints 0.501489999
Таким образом, точность 55% считается очень низкой.
Возможно, важно знать, как вы на самом деле вычисляете точность здесь. – cel
Здесь точность является бинарной классификационной точностью, то есть (TP + TN)/N –