IIWAB make_classification介绍 - IIWAB

make_classification介绍

IIWAB 1月前 ⋅ 117 阅读

make_classificationsklearn.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 个特征是有信息的。然后将数据集划分为训练集和测试集,使用逻辑回归模型进行训练和预测,并计算了模型的准确率。


全部评论: 0

    我有话说: