我正在尝试使用scikit-learn中的make_classification生成一系列综合数据集,并具有不同的样本大小,患病率(即,阳性类别的比例)和准确性。改变样本量和患病率非常简单,但是我很难使用逻辑回归生成任何精度低于50%的数据集。玩弄信息性列的数量,每个类的簇的数量以及flip_y参数(随机翻转给定比例的观测值的类)似乎降低了准确性,但并没有我想要的那么多。有没有一种方法可以改变make_classification的参数,从而进一步降低该参数(例如,降低到20%)?
谢谢!
通常,将极低的数量n_samples
,随机翻转标签的高可能性flip_y
和大量的数量相结合,n_classes
可以将您带到您想要的位置。
您可以尝试以下操作:
from sklearn.cross_validation import cross_val_score
from sklearn.datasets import make_classification
from sklearn.linear_model import LogisticRegression
lr = LogisticRegression()
# 2-class problem
X, y = make_classification(n_samples=100, n_informative=2, flip_y=0.8, random_state=42)
cross_val_score(estimator=lr, X=X, y=y, scoring='accuracy', cv=10)
# Output
array([ 0.54545455, 0.27272727, 0.45454545, 0.2 , 0.4 ,
0.5 , 0.7 , 0.55555556, 0.55555556, 0.44444444])
# 8-class problem
X, y = make_classification(n_samples=100, n_classes=8, n_informative=4, n_clusters_per_class=1, flip_y=0.5, random_state=42)
cross_val_score(estimator=lr, X=X, y=y, scoring='accuracy', cv=5)
# Output
array([ 0.16666667, 0.19047619, 0.15 , 0.16666667, 0.29411765])
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句