pip3 install scikit-learn==0.19.1
注:需要Numpy,Scipy等库的支持
Python (>= 3.5),
NumPy (>= 1.11.0),
SciPy (>= 0.17.0),
joblib (>= 0.11).
import sklearn
from sklearn.neighbors import KNeighborsClassifier
# 构造数据
x = [[1], [5], [10], [20]]
y = [2, 2, 6, 6]
# 训练模型
# 实例化估计器对象
estimator = KNeighborsClassifier(n_neighbors=1)
# 调用fit方法 进行训练
estimator.fit(x, y)
# 数据预测
ret = estimator.predict([[2]])
print(ret)
ret = estimator.predict([[30]])
print(ret)
from sklearn.datasets import load_iris,fetch_20newsgroups
# 小数据集获取
iris = load_iris()
# print(iris)
# 大数据集获取
# news = fetch_20newsgroups()
# print(news)
# 数据集属性描述
print("数据集特征值是:\n", iris.data)
print("数据集目标值是:\n", iris["target"])
print("数据集特征值名字是:\n", iris.feature_names)
print("数据集目标值名字是:\n", iris.target_names)
print("数据集描述是:\n", iris.DESCR)
from sklearn.datasets import load_iris, fetch_20newsgroups
import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
from pylab import mpl
# 设置显示中文字体
mpl.rcParams['font.sans-serif'] = ["SimHei"]
# 设置正常显示符号
mpl.rcParams['axes.unicode_minus'] = False
# 小数据集获取
iris = load_iris()
# 数据可视化
iris_d = pd.DataFrame(data=iris.data, columns=["Sepal_Length", "Sepal_Width", "Petal_length", "Petal_Width"])
print(iris_d)
iris_d["target"] = iris.target
def iris_plot(data, col1, col2):
sns.lmplot(x=col1, y=col2, data=data,hue="target",fit_reg=False)
plt.xlabel(col1)
plt.ylabel(col2)
plt.title("种类分布图")
plt.show()
iris_plot(iris_d, "Sepal_Width", "Petal_Length")
from sklearn.datasets import load_iris, fetch_20newsgroups
from sklearn.model_selection import train_test_split
x_train, x_test, y_train, y_test = train_test_split(iris.data, iris.target, random_state=22, test_size=0.2)
print("训练集的特征值是:\n", x_train)
print("训练集的目标值是:\n", y_train)
print("测试集的特征值是:\n", x_test)
print("测试集的目标值是:\n", y_test)
x_train1, x_test1, y_train1, y_test1 = train_test_split(iris.data, iris.target, random_state=2, test_size=0.2)
print("测试集的目标值是:\n", y_test)
print("测试集1的目标值是:\n", y_test1)
# @Author : CG
# @File : 03-鸢尾花种类预测.py
# @Time : 2022/2/8 17:19
# @contact: [email protected]
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
# 1.获取数据集
iris = load_iris()
# 2.数据基本处理 不同的random_state将导致训练集和测试集的不同,进而导致最终准确率不同
x_train, x_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.2, random_state=22)
# 3.特征工程
transfer = StandardScaler()
x_train = transfer.fit_transform(x_train)
x_test = transfer.transform(x_test)
#fit(): 用来计算mean(均值)和std(标准差),以便后面进行数据的标准化
#transform(): 根据fit()函数计算的mean和std对数据进行标准化
#fit_transform(): 是fit()函数和transform()函数的组合,先进行fit,之后再进行transform(标准化)
# fit_transform方法是fit和transform的结合,
# fit_transform(X_train) 意思是找出X_train的平均值和标准差,并应用在X_train上。
# 这时对于X_test,我们就可以直接使用transform方法。
# 因为此时StandardScaler已经保存了X_train的平均值和标准差。
#因为我们必须保证,测试集在进行标准化的时候,使用的是统一的缩放参数,即为均值和标准差。所以先使用fit_transform()在训练集上,再使用transform()在测试集上。
# 4.机器学习(模型训练)knn
# 实例化估计器
estimator = KNeighborsClassifier(n_neighbors=5)
# 模型训练
estimator.fit(x_train, y_train)
# 5.模型评估
# 预测值结果输出
y_pre = estimator.predict(x_test)
print("预测值是:\n", y_pre)
print("预测值与真实值的对别是:\n", y_pre == y_test)
# 准确率计算
score = estimator.score(x_test, y_test)
print(score)
# @Author : CG
# @File : 03-鸢尾花种类预测.py
# @Time : 2022/2/8 17:19
# @contact: [email protected]
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split, GridSearchCV
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
# 1.获取数据集
iris = load_iris()
# 2.数据基本处理
x_train, x_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.2, random_state=22)
# 3.特征工程
transfer = StandardScaler()
x_train = transfer.fit_transform(x_train)
x_test = transfer.transform(x_test)
#fit(): 用来计算mean(均值)和std(标准差),以便后面进行数据的标准化
#transform(): 根据fit()函数计算的mean和std对数据进行标准化
#fit_transform(): 是fit()函数和transform()函数的组合,先进行fit,之后再进行transform(标准化)
# fit_transform方法是fit和transform的结合,
# fit_transform(X_train) 意思是找出X_train的平均值和标准差,并应用在X_train上。
# 这时对于X_test,我们就可以直接使用transform方法。
# 因为此时StandardScaler已经保存了X_train的平均值和标准差。
#因为我们必须保证,测试集在进行标准化的时候,使用的是统一的缩放参数,即为均值和标准差。所以先使用fit_transform()在训练集上,再使用transform()在测试集上。
# 4.机器学习(模型训练)knn
# 实例化估计器
estimator = KNeighborsClassifier(n_neighbors=5)
# 模型调优 - 交叉验证,网格搜索
param_grid = {"n_neighbors": [1, 3, 5, 7]}
estimator = GridSearchCV(estimator, param_grid=param_grid, cv=5)
# 模型训练
estimator.fit(x_train, y_train)
# 5.模型评估
# 预测值结果输出
y_pre = estimator.predict(x_test)
print("预测值是:\n", y_pre)
print("预测值与真实值的对别是:\n", y_pre == y_test)
# 准确率计算
score = estimator.score(x_test, y_test)
print(score)
# 交叉验证、网格搜索结果
print("交叉验证、网格搜索的最好结果是:\n", estimator.best_score_)
print("交叉验证、网格搜索的最好模型是:\n", estimator.best_estimator_)
print("交叉验证、网格搜索的模型结果是:\n", estimator.cv_results_)