make_classification
是 sklearn.datasets
模块中的一个函数,其作用是生成一个用于分类任务的合成数据集。在机器学习的实验与测试里,往往需要一些标准的数据集来评估模型的性能,而 make_classification
能够依据用户的需求生成具有不同特征和分布的数据集,从而方便用户对模型进行测试与验证。
函数原型
sklearn.datasets.make_classification(n_samples=100, n_features=20, n_informative=2, n_redundant=2,
n_repeated=0, n_classes=2, n_clusters_per_class=2,
weights=None, flip_y=0.01, class_sep=1.0, hypercube=True,
shift=0.0, scale=1.0, shuffle=True, random_state=None)
参数解释
n_samples
:整数,默认值为 100。表示生成样本的数量。n_features
:整数,默认值为 20。表示生成特征的数量。n_informative
:整数,默认值为 2。表示有信息的特征数量,这些特征对分类任务有实际的帮助。n_redundant
:整数,默认值为 2。表示冗余特征的数量,这些特征是有信息特征的线性组合。n_repeated
:整数,默认值为 0。表示重复特征的数量,这些特征是有信息特征和冗余特征的随机重复。n_classes
:整数,默认值为 2。表示分类的类别数量。n_clusters_per_class
:整数,默认值为 2。表示每个类别中的簇数量。weights
:数组或None
,默认值为None
。表示每个类别的样本比例。例如[0.2, 0.8]
表示第一个类别占 20%,第二个类别占 80%。如果为None
,则所有类别样本数量相等。flip_y
:浮点数,默认值为 0.01。表示随机交换标签的样本比例,用于引入噪声。class_sep
:浮点数,默认值为 1.0。表示不同类别之间的分离程度,值越大,类别之间越容易区分。hypercube
:布尔值,默认值为True
。如果为True
,则将簇放置在超立方体的顶点上;如果为False
,则将簇放置在随机多面体的顶点上。shift
:浮点数或数组,默认值为 0.0。表示对每个特征进行平移的量。scale
:浮点数或数组,默认值为 1.0。表示对每个特征进行缩放的量。shuffle
:布尔值,默认值为True
。如果为True
,则对生成的样本和特征进行洗牌。random_state
:整数、RandomState
实例或None
,默认值为None
。用于随机数生成器的种子,确保结果的可重复性。
返回值
X
:二维数组,形状为(n_samples, n_features)
。表示生成的特征矩阵。y
:一维数组,形状为(n_samples,)
。表示生成的类别标签。
示例代码
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score
# 生成一个分类数据集
X, y = make_classification(n_samples=1000, n_features=10, n_informative=5, n_redundant=0, random_state=42)
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 创建逻辑回归模型
model = LogisticRegression()
# 训练模型
model.fit(X_train, y_train)
# 进行预测
y_pred = model.predict(X_test)
# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print(f"Accuracy: {accuracy}")
在这个示例中,使用 make_classification
生成了一个包含 1000 个样本、10 个特征的分类数据集,其中 5 个特征是有信息的。然后将数据集划分为训练集和测试集,使用逻辑回归模型进行训练和预测,并计算了模型的准确率。
注意:本文归作者所有,未经作者允许,不得转载