目录
一:加载数据
二:数据集整理
三:数据集划分
一:加载数据
加载数据,并创建一个DataFrame,便于数据分析
from sklearn.datasets import load_iris
import pandas as pd
import numpy as np
from sklearn.utils import shuffle
# 1加载数据
iris_datasets = load_iris()
# 2 创建一个DataFrame 特征+标签
df = pd.DataFrame(iris_datasets['data'], columns=iris_datasets.feature_names)
print(df.head(), df.shape)
sepal length (cm) sepal width (cm) petal length (cm) petal width (cm)
0 5.1 3.5 1.4 0.2
1 4.9 3.0 1.4 0.2
2 4.7 3.2 1.3 0.2
3 4.6 3.1 1.5 0.2
4 5.0 3.6 1.4 0.2 (150, 4)
打印出鸢尾花数据集(头部信息)以及规格(150行4列),如上所示
二:数据集整理
2-1 添加标签列
from sklearn.datasets import load_iris
import pandas as pd
import numpy as np
from sklearn.utils import shuffle
# 1加载数据
iris_datasets = load_iris()
# 2 创建一个DataFrame 特征+标签
df = pd.DataFrame(iris_datasets['data'], columns=iris_datasets.feature_names)
# 3 添加标签列
df['label'] = iris_datasets['target']
print(df.head(), df.shape)
头部信息及规格如下
sepal length (cm) sepal width (cm) ... petal width (cm) label
0 5.1 3.5 ... 0.2 0
1 4.9 3.0 ... 0.2 0
2 4.7 3.2 ... 0.2 0
3 4.6 3.1 ... 0.2 0
4 5.0 3.6 ... 0.2 0
[5 rows x 5 columns] (150, 5)
2-2 数据打乱
from sklearn.datasets import load_iris
import pandas as pd
import numpy as np
from sklearn.utils import shuffle
# 1加载数据
iris_datasets = load_iris()
# 2 创建一个DataFrame 特征+标签
df = pd.DataFrame(iris_datasets['data'], columns=iris_datasets.feature_names)
# 3 添加标签列
df['label'] = iris_datasets['target']
# 4 数据打乱
df = shuffle(df)
print(df.head(), df.shape)
头部信息(随机取前5个数据)及规格如下
sepal length (cm) sepal width (cm) ... petal width (cm) label
60 5.0 2.0 ... 1.0 1
85 6.0 3.4 ... 1.6 1
64 5.6 2.9 ... 1.3 1
100 6.3 3.3 ... 2.5 2
116 6.5 3.0 ... 1.8 2
[5 rows x 5 columns] (150, 5)
2-3 索引重新排序
from sklearn.datasets import load_iris
import pandas as pd
import numpy as np
from sklearn.utils import shuffle
# 1加载数据
iris_datasets = load_iris()
# 2 创建一个DataFrame 特征+标签
df = pd.DataFrame(iris_datasets['data'], columns=iris_datasets.feature_names)
# 3 添加标签列
df['label'] = iris_datasets['target']
# 4 数据打乱
df = shuffle(df)
# 5 索引重新排序
df.reset_index(drop=True, inplace=True)
print(df.head(10), df.shape)
头部信息(随机取前10个数据,同时进行索引排序)及规格如下
sepal length (cm) sepal width (cm) ... petal width (cm) label
0 4.4 2.9 ... 0.2 0
1 6.3 2.5 ... 1.5 1
2 4.8 3.0 ... 0.3 0
3 4.6 3.4 ... 0.3 0
4 6.1 2.8 ... 1.3 1
5 5.7 2.9 ... 1.3 1
6 5.9 3.0 ... 1.5 1
7 6.2 2.8 ... 1.8 2
8 5.2 3.5 ... 0.2 0
9 5.0 3.3 ... 0.2 0
[10 rows x 5 columns] (150, 5)
三:数据集划分
本节数据集划分,相对于前一节文章,使用到pandas、numpy
3-1 特征数据集划分
特征训练集 + 特征测试集
DataFrame-->array 使用.values
from sklearn.datasets import load_iris
import pandas as pd
import numpy as np
from sklearn.utils import shuffle
# 1加载数据
iris_datasets = load_iris()
# 2 创建一个DataFrame 特征+标签
df = pd.DataFrame(iris_datasets['data'], columns=iris_datasets.feature_names)
# 3 添加标签列
df['label'] = iris_datasets['target']
# 4 数据打乱
df = shuffle(df)
# 5 索引重新排序
df.reset_index(drop=True, inplace=True)
# 6 数据集划分:训练集 + 测试集
# 特征数据--前4列 DataFrame-->array 使用.values
x = df.iloc[:, :4].values
print(x, type(x))
# 特征训练集 120条 占比0.8
x_train = x[:120]
# 特征测试集 30条 占比0.2
x_test = x[120:]
[[5.1 2.5 3. 1.1]
[5.1 3.3 1.7 0.5]
[5.4 3.9 1.7 0.4]
[6.5 3. 5.2 2. ]
[5.1 3.4 1.5 0.2]
[6.8 3.2 5.9 2.3]
[7.2 3.6 6.1 2.5]
[6.4 2.7 5.3 1.9]
[4.6 3.4 1.4 0.3]
[4.9 3.1 1.5 0.2]
[6.1 2.6 5.6 1.4]
[5.5 3.5 1.3 0.2]
[7.1 3. 5.9 2.1]
[4.8 3. 1.4 0.3]
[5.7 3. 4.2 1.2]
[6.4 3.2 4.5 1.5]
[6.7 3.1 5.6 2.4]
[6.4 3.2 5.3 2.3]
[5.6 2.9 3.6 1.3]
[6.2 2.8 4.8 1.8]
[5.6 2.8 4.9 2. ]
[5.4 3.7 1.5 0.2]
[5.1 3.5 1.4 0.2]
[5.5 2.4 3.8 1.1]
[6. 3. 4.8 1.8]
[6.2 2.2 4.5 1.5]
[5.6 3. 4.1 1.3]
[4.6 3.1 1.5 0.2]
[5.6 2.5 3.9 1.1]
[5.8 4. 1.2 0.2]
[5.1 3.7 1.5 0.4]
[5.9 3.2 4.8 1.8]
[4.4 3.2 1.3 0.2]
[5.7 2.8 4.5 1.3]
[6.1 3. 4.9 1.8]
[5.1 3.8 1.5 0.3]
[6.7 3. 5. 1.7]
[4.7 3.2 1.3 0.2]
[5.4 3.4 1.7 0.2]
[6.5 2.8 4.6 1.5]
[6.7 3. 5.2 2.3]
[5.7 4.4 1.5 0.4]
[5.8 2.7 4.1 1. ]
[5.2 2.7 3.9 1.4]
[6.4 2.8 5.6 2.1]
[6.5 3. 5.5 1.8]
[7.6 3. 6.6 2.1]
[5. 3.2 1.2 0.2]
[5. 3.4 1.5 0.2]
[7.9 3.8 6.4 2. ]
[5.2 3.4 1.4 0.2]
[7.4 2.8 6.1 1.9]
[5.5 2.6 4.4 1.2]
[6.8 2.8 4.8 1.4]
[4.4 3. 1.3 0.2]
[6. 2.2 4. 1. ]
[6.8 3. 5.5 2.1]
[5.6 2.7 4.2 1.3]
[5.8 2.8 5.1 2.4]
[6.4 3.1 5.5 1.8]
[6.7 2.5 5.8 1.8]
[6.3 2.3 4.4 1.3]
[5.2 4.1 1.5 0.1]
[5. 3.4 1.6 0.4]
[6. 3.4 4.5 1.6]
[5.1 3.5 1.4 0.3]
[6.3 2.8 5.1 1.5]
[7.7 3.8 6.7 2.2]
[5.6 3. 4.5 1.5]
[7.2 3. 5.8 1.6]
[6.3 3.3 4.7 1.6]
[6. 2.2 5. 1.5]
[6.4 2.9 4.3 1.3]
[6.3 3.4 5.6 2.4]
[4.7 3.2 1.6 0.2]
[7.7 2.8 6.7 2. ]
[6.9 3.1 5.1 2.3]
[6.9 3.2 5.7 2.3]
[4.8 3.1 1.6 0.2]
[6.9 3.1 5.4 2.1]
[6.9 3.1 4.9 1.5]
[5.8 2.7 5.1 1.9]
[7.2 3.2 6. 1.8]
[5.1 3.8 1.6 0.2]
[4.9 3.1 1.5 0.1]
[6.1 2.9 4.7 1.4]
[5.8 2.7 3.9 1.2]
[6.1 3. 4.6 1.4]
[5.7 2.5 5. 2. ]
[5.5 4.2 1.4 0.2]
[5.7 2.8 4.1 1.3]
[6.4 2.8 5.6 2.2]
[4.6 3.6 1. 0.2]
[6.7 3.3 5.7 2.1]
[6.2 2.9 4.3 1.3]
[6.7 3.1 4.4 1.4]
[5. 2. 3.5 1. ]
[5. 2.3 3.3 1. ]
[6.5 3.2 5.1 2. ]
[4.3 3. 1.1 0.1]
[5. 3.5 1.3 0.3]
[5.5 2.4 3.7 1. ]
[5.9 3. 4.2 1.5]
[6.3 2.5 5. 1.9]
[6.2 3.4 5.4 2.3]
[5.9 3. 5.1 1.8]
[4.8 3.4 1.6 0.2]
[5.1 3.8 1.9 0.4]
[4.4 2.9 1.4 0.2]
[5.4 3.4 1.5 0.4]
[4.9 3. 1.4 0.2]
[5.8 2.6 4. 1.2]
[5.8 2.7 5.1 1.9]
[5. 3.3 1.4 0.2]
[5.4 3.9 1.3 0.4]
[6.3 3.3 6. 2.5]
[6.6 2.9 4.6 1.3]
[7.3 2.9 6.3 1.8]
[5.4 3. 4.5 1.5]
[5.2 3.5 1.5 0.2]
[6.7 3.3 5.7 2.5]
[6. 2.9 4.5 1.5]
[5. 3. 1.6 0.2]
[5.7 2.9 4.2 1.3]
[4.8 3.4 1.9 0.2]
[5.3 3.7 1.5 0.2]
[5. 3.5 1.6 0.6]
[6.3 2.7 4.9 1.8]
[6.6 3. 4.4 1.4]
[4.5 2.3 1.3 0.3]
[5.7 3.8 1.7 0.3]
[5.7 2.6 3.5 1. ]
[4.9 2.5 4.5 1.7]
[6. 2.7 5.1 1.6]
[6.7 3.1 4.7 1.5]
[4.6 3.2 1.4 0.2]
[7.7 2.6 6.9 2.3]
[4.9 2.4 3.3 1. ]
[6.5 3. 5.8 2.2]
[4.9 3.6 1.4 0.1]
[6.1 2.8 4. 1.3]
[7.7 3. 6.1 2.3]
[5.5 2.5 4. 1.3]
[4.8 3. 1.4 0.1]
[6.3 2.9 5.6 1.8]
[7. 3.2 4.7 1.4]
[6.1 2.8 4.7 1.2]
[5. 3.6 1.4 0.2]
[5.5 2.3 4. 1.3]
[6.3 2.5 4.9 1.5]] <class 'numpy.ndarray'>
特征数据集 转换为ndarray,如上所示
3-2 标签数据集划分
标签训练集 + 标签测试集
将二维数组[拍平]变为一维的数组 使用np.ravel
from sklearn.datasets import load_iris
import pandas as pd
import numpy as np
from sklearn.utils import shuffle
# 1加载数据
iris_datasets = load_iris()
# 2 创建一个DataFrame 特征+标签
df = pd.DataFrame(iris_datasets['data'], columns=iris_datasets.feature_names)
# 3 添加标签列
df['label'] = iris_datasets['target']
# 4 数据打乱
df = shuffle(df)
# 5 索引重新排序
df.reset_index(drop=True, inplace=True)
# 6 数据集划分:训练集 + 测试集
# 特征数据--前4列 DataFrame-->array 使用.values
x = df.iloc[:, :4].values
# 特征训练集 120条 占比0.8
x_train = x[:120]
# 特征测试集 30条 占比0.2
x_test = x[120:]
# 标签--label 将二维数组[拍平]变为一维的数组 使用.ravel
y = np.ravel(df.iloc[:, :4].values)
print(y, type(y))
# 标签训练集 120条 占比0.8
y_train = y[:120]
# 标签测试集 30条 占比0.2
y_test = y[120:]
[4.7 3.2 1.3 0.2 6.5 3. 5.5 1.8 6.4 2.7 5.3 1.9 4.8 3. 1.4 0.1 6.8 3.2
5.9 2.3 6.2 2.8 4.8 1.8 6.5 2.8 4.6 1.5 5.8 2.7 3.9 1.2 6.6 2.9 4.6 1.3
6.3 2.5 5. 1.9 5.4 3.9 1.7 0.4 7.7 3.8 6.7 2.2 5.5 4.2 1.4 0.2 5.2 3.5
1.5 0.2 6.6 3. 4.4 1.4 6.1 2.8 4.7 1.2 6. 2.7 5.1 1.6 5.8 2.7 5.1 1.9
6.8 2.8 4.8 1.4 6.5 3. 5.2 2. 6.9 3.2 5.7 2.3 6.1 2.9 4.7 1.4 6.4 3.2
5.3 2.3 5.2 2.7 3.9 1.4 6.7 3. 5. 1.7 6.3 2.3 4.4 1.3 5.6 2.7 4.2 1.3
5.6 3. 4.1 1.3 4.4 2.9 1.4 0.2 5.1 3.3 1.7 0.5 6.4 3.2 4.5 1.5 7.2 3.6
6.1 2.5 6.3 2.5 4.9 1.5 5.5 2.5 4. 1.3 4.4 3. 1.3 0.2 6.1 3. 4.9 1.8
7.2 3.2 6. 1.8 5.3 3.7 1.5 0.2 5.7 2.8 4.1 1.3 5. 2.3 3.3 1. 6.3 2.9
5.6 1.8 5. 3.4 1.5 0.2 5.2 4.1 1.5 0.1 4.9 2.4 3.3 1. 6.1 2.6 5.6 1.4
4.4 3.2 1.3 0.2 6.7 3.3 5.7 2.1 7.6 3. 6.6 2.1 6.5 3.2 5.1 2. 4.9 2.5
4.5 1.7 5.1 3.5 1.4 0.2 5.7 3. 4.2 1.2 6.3 2.8 5.1 1.5 5.7 3.8 1.7 0.3
5.1 3.8 1.5 0.3 6. 2.9 4.5 1.5 5.9 3. 4.2 1.5 5.5 2.6 4.4 1.2 6.8 3.
5.5 2.1 5.7 2.8 4.5 1.3 5.2 3.4 1.4 0.2 5.1 3.8 1.9 0.4 4.8 3.4 1.9 0.2
4.6 3.6 1. 0.2 6.3 3.3 6. 2.5 6.9 3.1 5.4 2.1 6.2 3.4 5.4 2.3 6.3 3.4
5.6 2.4 5.8 2.6 4. 1.2 4.9 3.1 1.5 0.2 6.9 3.1 5.1 2.3 6.3 2.7 4.9 1.8
6.7 3.1 4.4 1.4 6.2 2.9 4.3 1.3 5.4 3. 4.5 1.5 6.7 3.3 5.7 2.5 5. 3.5
1.3 0.3 5.1 2.5 3. 1.1 5.8 4. 1.2 0.2 6.4 2.9 4.3 1.3 5.6 2.5 3.9 1.1
5.1 3.4 1.5 0.2 6.7 3. 5.2 2.3 4.8 3. 1.4 0.3 5.9 3.2 4.8 1.8 4.7 3.2
1.6 0.2 6.1 2.8 4. 1.3 4.6 3.1 1.5 0.2 4.9 3.1 1.5 0.1 6.5 3. 5.8 2.2
7.1 3. 5.9 2.1 5.4 3.4 1.7 0.2 5.4 3.4 1.5 0.4 7.7 3. 6.1 2.3 6. 3.4
4.5 1.6 5. 3.5 1.6 0.6 5.9 3. 5.1 1.8 5.8 2.8 5.1 2.4 7.4 2.8 6.1 1.9
5. 3.3 1.4 0.2 6.7 2.5 5.8 1.8 5.1 3.5 1.4 0.3 5.6 2.9 3.6 1.3 6.4 2.8
5.6 2.2 4.6 3.2 1.4 0.2 5.6 2.8 4.9 2. 5.7 4.4 1.5 0.4 5.7 2.6 3.5 1.
5. 3.6 1.4 0.2 5. 3. 1.6 0.2 5.6 3. 4.5 1.5 7. 3.2 4.7 1.4 5.8 2.7
5.1 1.9 5.4 3.9 1.3 0.4 5. 3.4 1.6 0.4 6.7 3.1 5.6 2.4 4.8 3.4 1.6 0.2
6.1 3. 4.6 1.4 6. 2.2 5. 1.5 6.4 3.1 5.5 1.8 5.5 2.3 4. 1.3 6.4 2.8
5.6 2.1 5.4 3.7 1.5 0.2 5. 3.2 1.2 0.2 4.9 3. 1.4 0.2 4.9 3.6 1.4 0.1
6.2 2.2 4.5 1.5 5.1 3.8 1.6 0.2 4.5 2.3 1.3 0.3 5.5 2.4 3.8 1.1 6. 3.
4.8 1.8 5.7 2.5 5. 2. 5.1 3.7 1.5 0.4 5.8 2.7 4.1 1. 6.9 3.1 4.9 1.5
7.9 3.8 6.4 2. 6.3 3.3 4.7 1.6 7.3 2.9 6.3 1.8 7.7 2.8 6.7 2. 7.7 2.6
6.9 2.3 5.7 2.9 4.2 1.3 5. 2. 3.5 1. 4.3 3. 1.1 0.1 4.8 3.1 1.6 0.2
5.5 3.5 1.3 0.2 7.2 3. 5.8 1.6 5.5 2.4 3.7 1. 4.6 3.4 1.4 0.3 6. 2.2
4. 1. 6.7 3.1 4.7 1.5] <class 'numpy.ndarray'>
标签数据集 转换为ndarray,如上所示
完整源码,步骤详尽,如下可以自取,
可以自己打印 :特征训练集x_train、特性测试集x_test、标签训练集y_train、标签测试集y_test 【加深理解最重要】
from sklearn.datasets import load_iris
import pandas as pd
import numpy as np
from sklearn.utils import shuffle
# 1 加载数据
iris_datasets = load_iris()
# 2 创建一个DataFrame 特征+标签
df = pd.DataFrame(iris_datasets['data'], columns=iris_datasets.feature_names)
# 3 添加标签列
df['label'] = iris_datasets['target']
# 4 数据打乱
df = shuffle(df)
# 5 索引重新排序
df.reset_index(drop=True, inplace=True)
# 6 数据集划分:训练集 + 测试集
# 6-1 特征数据--前4列 DataFrame-->array 使用.values
x = df.iloc[:, :4].values
# 特征训练集 120条 占比0.8
x_train = x[:120]
# 特征测试集 30条 占比0.2
x_test = x[120:]
# 6-2 标签--label 将二维数组[拍平]变为一维的数组 使用.ravel
y = np.ravel(df.iloc[:, :4].values)
# 标签训练集 120条 占比0.8
y_train = y[:120]
# 标签测试集 30条 占比0.2
y_test = y[120:]