导引

""" iris 鸢尾花"""
from sklearn.datasets import load_iris

# 鸢尾花数据集位于scikit_learn 数据集的 datasets 模块中,调用 load_iris 来加载数据

iris_dataset = load_iris()
# load_iris() 返回的是一个Bunch对象,与字典类似,里面包含键和值
print(f"1-  Key of iris_dataset: \n {iris_dataset.keys()}.")

print("2-   " + iris_dataset['DESCR'][:400] + "\n……")

print(f"3-   Target names: {iris_dataset['target_names']}\n")
#  target_names 键对应的值是一个字符串数组,里面包含我们要预测的花的品种

print(f"4-   Feature names: \n{iris_dataset['feature_names']}\n")
# feature_names 键 对应的是字符串列表,对每个特征进行说明

print(f"5-   Type of data: {type(iris_dataset['data'])}\n")
# data 里面是花萼长度、花萼宽度、花瓣长度、花瓣宽度的测量数据,格式为 NumPy 数组
# type 返回的是类型

print(f"6-   shape of data: {iris_dataset['data'].shape}\n")
# 里面包含 150 朵花,每个花有四个测量数据

"""
机器学习中的个体叫作样 本(sample),其属性叫作特征(feature)。data 数组的形状(shape)是样本数乘以特征
数。这是 scikit-learn 中的约定
"""

print(f"7-   First five rows of data:\n {iris_dataset['data'][:5]}\n")
# 前5个样本的特征数值

print(f"8-   Target:\n{iris_dataset['target']}\n")
#  0 代表 setosa,1 代表 versicolor, 2 代表 virginica

"""
不能将用于构建模型的数据用于评估模型。因为我们的模型会一直记住整个训练集,
所以对于训练集中的任何数据点总会预测正确的标签
这种记忆无法告诉我们模型的泛化能力如何
"""

 

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
import pandas as pd
import numpy as np
import scipy as sp
import IPython
import sklearn

iris_dataset = load_iris()
X_train, X_test, y_train, y_test = train_test_split(
    iris_dataset['data'], iris_dataset['target'], random_state=0)
"""
scikit-learn 中的 train_test_split 函数可以打乱数据集并进行拆分。
这个函数将 75% 的行数据及对应标签作为训练集,剩下 25% 的数据及其标签作为测试集。
scikit-learn 中的数据通常用大写的 X 表示,而标签用小写的 y 表示。

train_test_split(train_data,train_target,test_size=0.4, random_state=0,stratify=y_train)

train_data:所要划分的样本特征集
train_target:所要划分的样本结果
test_size:样本占比,如果是整数的话就是样本的数量

random_sate其实就是该组随机数的编号,在需要重复试验的时候,保证得到一组一样的随机数。
比如你每次都填1,其他参数一样的情况下你得到的随机数组是一样的。但填0或不填,每次都会不一样。

用了stratify参数,training集和testing集的类的比例是 A:B= 4:1,等同于split前的比例(80:20)。
通常在这种类分布不平衡的情况下会用到stratify。
将stratify=X就是按照X中的比例分配 
将stratify=y就是按照y中的比例分配
"""
print(f"X_test shape: {X_train.shape}")
print(f"y_test shape: {y_train.shape}")

print(f"X_test shape: {X_test.shape}")
print(f"y_test shape: {y_test.shape}")

""" 
在构建机器学习模型之前,通常最好检查一下数据,看看如果不用机器学习能不能轻松完成任务,
或者需要的信息有没有包含在数据中。
"""

iris_dataframe = pd.DataFrame(X_train, columns=iris_dataset.feature_names)
#grr = pd.scatter_matrix(iris_dataframe, c=y_train, figsize=(15, 15), marker='o',hist_kwds={'bins': 20}, s=60, alpha=.8, cmap=mglearn.cm3)

 

posted @ 2022-03-27 15:32  我就一水  阅读(89)  评论(0)    收藏  举报