[机器学习与scikit-learn-6]:数据集获取的主要方式-2-计算机生成数据集

作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客

本文网址:https://blog.csdn.net/HiWangWenBing/article/details/123238517


目录

第1章 scikit-learn数据获取的主要方式

第2章 计算机自动生成数据集

2.1 概述

2.2 常见的生成函数

2.3 案例1:生成聚类数据:make_blobs

2.3 案例2:生成分类数据:make_classification

2.3 案例3:生成环形数据:make_circles

2.4 案例4: 生成回归数据:make_regression


第1章 scikit-learn数据获取的主要方式

[机器学习与scikit-learn-6]:数据集获取的主要方式-2-计算机生成数据集_第1张图片

自带的小数据集:安装后,这些数据集一并安装,xxx.load_xxx()

在线下载的数据集:下载远程数据集

计算机生成的数据集:通过某种数学算法,生成数据集

svmlight/svm格式的数据集: 从文件冲去数据集

mldata.org: 在线下载由mldata.org提供的大型数据集

第2章 计算机自动生成数据集

2.1 概述

有时候,我们在调试和训练模型时,没有真实的数据,为了能够调试和验证模型,有时候我们需要手工生成模拟数据,scikit-learn提供了API, 用于自动生成指定特征的数据集(模拟数据集)。

自动生成数据集的好处有:

  • 非常灵活:可以控制样本数量,特征数量,类别数量,问题难易程度等等。。。
  • 无穷无尽:再也不用担心我没有数据集了。。
  • 为算法提供模拟数据

2.2 常见的生成函数

  • make_blobs 可用于聚类和分类
  • make_classification 可用于分类
  • make_circles 可用于分类
  • make_moons 可用于分类
  • make_multilabel_classification 可用于多标签分类
  • make_regression 可用于回归

2.3 案例1:生成聚类数据:make_blobs

import numpy as np
import pandas as pd
%matplotlib inline
import matplotlib

# 生成数据 make_blobs
from sklearn.datasets import make_blobs
# 生成数据集
# n_samples:样本总数
# centers:中心点坐标,与分类数一致
# n_features:分类数
# cluster_std:正态分布的标准方差
# random_state:随机种子,确保每次运行,生成的随机数是一样的
X, labels=make_blobs(n_samples=200,centers=[[1,1],[-1,-1],[1,-1]], n_features=2, cluster_std=0.3, random_state = 0)

# 生成的数据集,自动带上标签
print('X.shape',X.shape)
print("labels",labels.shape)

# 分类的类型汇总
print("labels",set(labels))
X.shape (200, 2)
labels (200,)
labels {0, 1, 2}
# 通过pandas可视化数据
df = pd.DataFrame(np.c_[X,labels],columns = ['feature1','feature2','labels'])

df.plot.scatter('feature1','feature2', s = 100, c = list(df['labels']), cmap = 'rainbow',colorbar = False, alpha = 0.8,title = 'dataset by make_blobs')

[机器学习与scikit-learn-6]:数据集获取的主要方式-2-计算机生成数据集_第2张图片

备注:生成成块聚合数据

2.3 案例2:生成分类数据:make_classification

#生成数据集 make_classification
from sklearn.datasets import make_classification

# n_samples:样本数
# n_features:特征数目
# n_classes:分类数目
# n_redundant:冗余数
X,labels=make_classification(n_samples=300,n_features=2, n_classes = 2, n_redundant=0, n_informative=2, random_state=0, n_clusters_per_class=2)

print(X.shape)
print(labels.shape)
print(set(labels))
(300, 2)
(300,)
{0, 1}
df = pd.DataFrame(np.c_[X, labels],columns = ['feature1','feature2','labels'])
df['labels'] = df['labels'].astype('i2')

df.plot.scatter('feature1','feature2', s = 100, c = list(df['labels']),cmap = 'rainbow',colorbar = False,alpha = 0.8,title = 'dataset by make_classification')

[机器学习与scikit-learn-6]:数据集获取的主要方式-2-计算机生成数据集_第3张图片

2.3 案例3:生成环形数据:make_circles

#生成数据集 make_circles
from sklearn.datasets import make_circles
X,labels=make_circles(n_samples=200,noise=0.2,factor=0.2,random_state=1)
print("X.shape:",X.shape)
print("labels:",set(labels))
X.shape: (200, 2)
labels: {0, 1}
df = pd.DataFrame(np.c_[X,labels],columns = ['feature1','feature2','labels'])
df['labels'] = df['labels'].astype('i2')

# 生成圆周数据
df.plot.scatter('feature1','feature2', s = 100, c = list(df['labels']),cmap = 'rainbow',colorbar = False, alpha = 0.8,title = 'dataset by make_circles')

[机器学习与scikit-learn-6]:数据集获取的主要方式-2-计算机生成数据集_第4张图片

2.4 案例4: 生成回归数据:make_regression

# 生成数据集 make_regression
from sklearn.datasets import make_regression

# 生成数据集
# n_samples:样本个数
# n_features:输入数据的维度,这里是1维x轴
# n_targets:输出数据的维度,这里是1为y轴
# bias:数据偏置大小
# noise:叠加的噪声大小
# random_state:随机种子
X,Y,coef = make_regression(n_samples=100, n_features=1, n_informative=1, n_targets=1, bias=5, effective_rank=None, tail_strength= 0, noise= 10, shuffle=True, coef=True, random_state=None)

print("X.shape:",X.shape)
print("Y.shape:",Y.shape)
X.shape: (100, 1)
Y.shape: (100,)
X.shape: (100, 1)
Y.shape: (100,)

[机器学习与scikit-learn-6]:数据集获取的主要方式-2-计算机生成数据集_第5张图片


作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客

本文网址:https://blog.csdn.net/HiWangWenBing/article/details/123238517

你可能感兴趣的:(机器学习,聚类,sklearn,数据集)