sklearn iris 案例
- 格式:doc
- 大小:15.55 KB
- 文档页数:4
Python机器学习经典案例Python机器学习经典案例随着大数据时代的到来,机器学习逐渐成为了热门的话题。
在机器学习领域,Python是一种十分受欢迎的编程语言之一,得益于其开源性、灵活性等特点,Python在机器学习领域被广泛应用。
本文将介绍几个Python机器学习经典案例,以此为大家提供参考和学习。
案例1:KNN分类器在Iris数据集上的应用工欲善其事,必先利其器。
在开始介绍Python机器学习案例前,我们需要先了解一下几个Python机器学习工具:- Numpy:用于处理大型数组和矩阵、支持数学运算、逻辑运算等。
- Pandas:用于数据操作和数据分析,可以读取各种格式的数据文件。
- Matplotlib:用于制作图表,展示数据结果。
- Scikit-learn(sklearn):Python机器学习库之一,包含机器学习中的各种算法和工具函数。
接下来我们以Iris数据集为例,介绍如何使用Python机器学习库中的KNN分类器进行数据分类。
Iris数据集是一个经典的数据集,它包含了三种鸢尾花(Iris Setosa、Iris Versicolour、Iris Virginica)的花萼和花瓣长度和宽度共四个属性,共计150条数据。
我们需要利用这些数据,训练出一个KNN分类器,用于预测新鲜的未知鸢尾花属于哪一类。
以下是我们的代码实现:```pythonimport numpy as npimport pandas as pdfrom sklearn.model_selection import train_test_splitfrom sklearn.neighbors import KNeighborsClassifierfrom sklearn import datasets#加载鸢尾花数据集iris = datasets.load_iris()#将数据集和标签拆分开来x = iris.data[:, :4]y = iris.target#数据分割x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2)#训练分类器kNN = KNeighborsClassifier(n_neighbors=3)kNN.fit(x_train, y_train)#预测并计算准确率y_pred = kNN.predict(x_test)acc = np.mean(y_pred == y_test) * 100print("Accuracy:{:.2f}%".format(acc))```通过运行以上代码我们可以得到一个精度为96.67%的结果,说明这个测试集的预测结果非常准确。
iris数据集决策树实现分类并画出决策树1# coding=utf-823import pandas as pd4from sklearn.model_selection import train_test_split5from sklearn import tree6from sklearn.metrics import precision_recall_curve #准确率与召回率7import numpy as np8#import graphviz910import os11 os.environ["PATH"] += os.pathsep + 'C:/Program Files (x86)/Graphviz2.38/bin/'12131415def get_data():16 file_path = "Iris.xlsx"1718 data = pd.read_excel(file_path)19 loandata = pd.DataFrame(data)20 ncol = (len(loandata.keys()))21print(ncol)22# l = list(data.head(0)) #获取表头23# print(l)2425 feature1 = []26for i in range(ncol-1):27 feature1.append("feature"+str(i))28print(feature1)29 iris_x = data.iloc[1:, :ncol-1]#此处有冒号,不显⽰最后⼀列30 iris_y = data.iloc[1:,ncol-1]#此处没有冒号,直接定位3132'''计算到底有⼏个类别'''33from collections import Counter34 counter = Counter(iris_y)35 con = len(counter)36print(counter.keys())37 class_names = []38for i in range(con):39 class_names.append(list(counter.keys())[i])40 x_train, x_test, y_train, y_test = train_test_split(iris_x,iris_y)41print(x_train)42print(y_test)43# return x_train, x_test, y_train, y_test444546#def dtfit(x_train, x_test, y_train, y_test):4748 clf = tree.DecisionTreeClassifier()49 clf = clf.fit(x_train,y_train)50 predict_data = clf.predict(x_test)51 predict_proba = clf.predict_proba(x_test)52from sklearn import metrics53# Do classification task,54# then get the ground truth and the predict label named y_true and y_pred55 classify_report = metrics.classification_report(y_test, clf.predict(x_test))56 confusion_matrix = metrics.confusion_matrix(y_train, clf.predict(x_train))57 overall_accuracy = metrics.accuracy_score(y_train, clf.predict(x_train))58 acc_for_each_class = metrics.precision_score(y_train,clf.predict(x_train), average=None)59 overall_accuracy = np.mean(acc_for_each_class)60print(classify_report)6162636465import pydotplus66 dot_data = tree.export_graphviz(clf, out_file=None,feature_names=feature1, filled=True, rounded=True, special_characters=True,precision = 4)67 graph = pydotplus.graph_from_dot_data(dot_data)68 graph.write_pdf("workiris.pdf")69return classify_report707172if__name__ == "__main__":73 x = get_data()74#dtfit(x_train, x_test, y_train, y_test)保存后注意填写表头。
iris数据集随机森林算法全文共四篇示例,供读者参考第一篇示例:iris数据集是机器学习领域中一个非常经典的数据集,用于分类问题的实践和研究。
在这篇文章中,我们将介绍随机森林算法在iris数据集上的应用和效果。
随机森林是一种集成学习方法,通过整合多个决策树来进行分类和回归。
在随机森林中,每个决策树都是独立建立的,而且树的生长过程中都会引入一定程度的随机性,以减少过拟合的风险。
随机森林还利用了子采样的方式来进一步增加模型的多样性,提高整体的泛化能力。
iris数据集是一个包含150个样本的数据集,每个样本包括4个属性(花瓣长度、花瓣宽度、花萼长度、花萼宽度)和一个类别标签(setosa、versicolor、virginica)。
这个数据集非常适合用于分类问题的实验,因为样本数量足够丰富且类别之间的区分度较高。
下面我们将通过Python代码来实现随机森林算法在iris数据集上的应用:# 读取iris数据集iris = pd.read_csv('iris.csv')# 创建随机森林分类器rf = RandomForestClassifier(n_estimators=100)# 在测试集上进行预测y_pred = rf.predict(X_test)# 计算准确率accuracy = accuracy_score(y_test, y_pred)print('Accuracy: ', accuracy)```通过上面的代码,我们首先读取了iris数据集,并将数据划分为训练集和测试集。
然后创建了一个包含100个决策树的随机森林分类器,并在训练集上进行模型训练。
最后在测试集上进行预测,并计算了模型的准确率。
随机森林算法在iris数据集上取得了不错的效果,准确率通常可以达到90%以上。
这表明随机森林算法在处理iris数据集这种简单且较小的数据集上具有较好的分类能力。
随机森林算法也有一些需要注意的地方。
iris sklearn 逻辑回归损失函数逻辑回归是一种常用的分类算法,在机器学习领域得到了广泛的应用。
其主要思想是通过建立一个用于分类的线性模型,然后使用逻辑函数(也称为sigmoid函数)将线性输出转换为概率值。
而损失函数则用来衡量模型预测结果与实际标签之间的差异,从而评估模型的性能。
在逻辑回归中,常用的损失函数是对数损失函数(Log Loss)。
对数损失函数是一种广义上的损失函数,用于衡量模型对样本的分类概率的预测与实际标签之间的差异。
对于二分类问题,其损失函数可以表示如下:L(y, \hat{y}) = -[ y \cdot \log(\hat{y}) + (1-y) \cdot \log(1-\hat{y}) ]其中,y表示实际标签(取值为0或1),\hat{y}表示模型的预测概率。
可以看到,当实际标签为1时,损失函数的第一项起作用;当实际标签为0时,损失函数的第二项起作用。
损失函数的值越小,则表示模型的预测与实际标签之间的差异越小,模型的性能越好。
对于多分类问题,逻辑回归可以通过一对多(One-vs.-Rest)的方式来解决。
即对于每个类别,单独训练一个二分类的逻辑回归模型,然后通过对概率取最大值的方式来进行分类。
对于多分类问题的逻辑回归,其损失函数可以表示如下:L(y, \hat{y}) = - \sum_{i=1}^{K} y_i \cdot \log(\hat{y_i}) 其中,y_i表示实际标签的第i个元素(取值为0或1),\hat{y}_i表示模型对第i个类别的预测概率。
损失函数的计算同样也是对每个类别进行单独计算,最后将各类别的损失求和即可。
对于逻辑回归的损失函数,可以通过最大似然估计的方法推导而来。
最大似然估计的基本思想是选择模型参数,使得观测数据出现的概率最大。
在逻辑回归中,我们假设样本的生成过程符合一个二项分布,然后通过最大似然估计推导出对数损失函数。
逻辑回归的损失函数具有以下几个特点:1.对数损失函数是一个凸函数,具有全局最优解。
scikit-learn简单实例scikit-learn是Python中一个重要的机器学习库,提供了丰富的机器学习算法和工具,方便用户进行数据挖掘和数据分析。
本文将以一个简单的实例来介绍scikit-learn的基本用法和功能。
我们需要安装scikit-learn库。
可以使用pip install命令来安装,如下所示:```pythonpip install -U scikit-learn```安装完成后,我们可以开始使用scikit-learn进行机器学习任务。
本文将以一个分类问题为例,介绍如何使用scikit-learn进行数据预处理、模型训练和模型评估。
我们需要准备数据。
假设我们要根据身高和体重来判断一个人的性别,我们可以使用一个包含身高、体重和性别的数据集。
为了简化问题,我们假设身高和体重都是数值型的特征。
接下来,我们需要加载数据集。
scikit-learn提供了许多常用的数据集,可以直接使用,也可以自己创建数据集。
在本例中,我们可以使用sklearn.datasets中的load_iris函数来加载数据集,如下所示:```pythonfrom sklearn.datasets import load_irisdata = load_iris()X, y = data.data, data.target```上述代码中,load_iris函数返回一个Bunch对象,其中包含了数据集和标签。
我们可以通过访问data属性和target属性来获取特征和标签。
接下来,我们需要对数据进行预处理。
预处理是机器学习任务的重要步骤,可以通过数据缩放、特征选择、特征提取等方法来提高模型的性能。
在本例中,我们可以对特征进行缩放,以便它们具有相同的尺度。
scikit-learn提供了一个名为StandardScaler的类,可以用于特征缩放。
我们可以使用该类对数据进行标准化处理,如下所示:```pythonfrom sklearn.preprocessing import StandardScalerscaler = StandardScaler()X_scaled = scaler.fit_transform(X)```上述代码中,我们首先创建了一个StandardScaler对象,然后使用fit_transform方法对特征进行标准化处理。
kmeans聚类算法实例Kmeans聚类算法是一种无监督学习算法,可用于将数据集划分成多个不同的簇。
本文将介绍一些Kmeans聚类算法的基本概念和一个实例。
Kmeans聚类算法基本概念Kmeans聚类算法主要包含以下基本概念:簇:Kmeans聚类算法的目标是将数据集划分成多个簇,其中每个簇包含相似的数据项。
质心:每个簇的质心是该簇内所有数据项的平均值。
距离度量:Kmeans聚类算法基于距离度量来衡量数据项之间的相似度。
聚类中心:Kmeans聚类算法一开始需要随机初始化一些聚类中心。
在Kmeans聚类算法的每个迭代中,聚类中心将根据当前分配给它们的数据项而重新计算。
Kmeans聚类算法实例下面我们将使用sklearn库中的Kmeans聚类算法来演示一个实例。
我们将使用Iris数据集来执行聚类。
首先,我们需要导入所需的库:from sklearn.cluster import KMeansimport matplotlib.pyplot as pltimport pandas as pdimport numpy as npfrom sklearn.datasets import load_iris接下来,我们将加载Iris数据集:iris = load_iris()df = pd.DataFrame(iris.data, columns=iris.feature_names)我们可以使用Kmeans聚类算法来将Iris数据集划分成3个簇:model = KMeans(n_clusters=3)model.fit(df.values)现在我们可以创建一个图来显示每个数据点所属的簇以及质心的位置:colors = np.array(['red', 'green', 'blue'])plt.scatter(df.values[:, 0], df.values[:, 1], c=colors[bels_]) plt.scatter(model.cluster_centers_[:, 0], model.cluster_centers_[:, 1], marker='x', s=100, linewidths=3, color='black', zorder=10) plt.show()该图显示了所有数据点以及它们所属的簇(红色、绿色和蓝色)。
MetadataState已完成Star⭐⭐⭐⭐tags python/库banner myUniverse/7.others/三体智子.jpgbanner_x0.7banner_y0.41. 数据集学习算法时,我们都希望有一些数据集可以练手。
Scikit learn 附带一些非常棒的数据集,如iris数据集、房价数据集、糖尿病数据集等。
这些数据集非常容易获取、同时也易于理解,可以直接在其上实现ML模型。
import sklearnfrom sklearn import datasetsimport pandas as pddataset = datasets.load_iris()df = pd.DataFrame(dataset.data, columns=dataset.feature_names)2. 数据拆分Sklearn 提供了拆分数据集以进行训练和测试的功能。
拆分数据集对于预测性能的无偏见评估至关重要,可以定义训练和测试数据集中的数据比例。
我们可以按如下方式拆分数据集:from sklearn.model_selection import train_test_splitx_train, x_test, y_train, y_test = train_test_split(x, y, test_size=2, random_state=4)3. 线性回归当输出变量为连续变量且与因变量呈线性关系时,使用监督机器学习模型,它可以通过分析前几个月的销售数据来预测未来几个月的销售。
借助sklearn,我们可以轻松实现线性回归模型,如下所示:首先 LinerRegression()创建一个线性回归的对象,然后我们在训练集上拟合模型。
最后,我们在测试数据集上预测了模型。
"rmse"和"r_score"可用于检查模型的准确性。
from sklearn.linear_model import LinearRegressionfrom sklearn.metrics import mean_squared_error, r2_scoreregression_model = LinearRegression()regression_model.fit(x_train, y_train)y_predicted = regression_model.predict(x_test)rmse = mean_squared_error(y_test, y_predicted)r2 = r2_score(y_test, y_predicted)4. 逻辑回归逻辑回归也是一种监督回归算法,就像线性回归一样。
Python机器学习库Scikitlearn使用教程Python机器学习库Scikit-learn是一个开源机器学习库,它为Python提供了丰富的机器学习算法和工具。
它建立在NumPy、SciPy和matplotlib之上,提供了简单而有效的工具来处理各种机器学习任务。
本教程将向您介绍Scikit-learn的基本功能和用法,以便您能够快速上手使用。
1. 安装Scikit-learn首先,您需要在Python环境中安装Scikit-learn。
您可以使用pip工具在命令行中执行以下命令进行安装:```pip install scikit-learn```确保您的Python版本符合Scikit-learn的要求,并且您已经安装了必要的依赖项。
2. 导入Scikit-learn安装完成后,您可以通过使用`import`语句将Scikit-learn导入到您的Python脚本或交互式环境中:```pythonimport sklearn```现在,您可以使用Scikit-learn的所有功能了。
3. 加载数据在使用Scikit-learn进行机器学习任务之前,您需要加载并准备好您的数据。
Scikit-learn支持多种数据格式,包括NumPy数组、Pandas数据帧和Python列表。
您可以使用Scikit-learn提供的功能或自定义的函数来加载您的数据。
例如,您可以使用`sklearn.datasets`模块中的函数来加载经典的机器学习数据集,如Iris鸢尾花数据集:```pythonfrom sklearn import datasetsiris = datasets.load_iris()X = iris.datay = iris.target```在这个例子中,`X`是一个包含鸢尾花特征的二维数组,`y`是一个包含鸢尾花类别的一维数组。
4. 数据预处理在进行机器学习任务之前,您通常需要对数据进行预处理。
sklearn实现多分类逻辑回归sklearn实现多分类逻辑回归#⼆分类逻辑回归算法改造适⽤于多分类问题1、对于逻辑回归算法主要是⽤回归的算法解决分类的问题,它只能解决⼆分类的问题,不过经过⼀定的改造便可以进⾏多(假设为n)(预测率最⾼的的)便为分类结果即可。
它所训练的时间是原来分类时间的n倍图1图2#OVR-OVO改造⼆分类算法实现多分类⽅式import numpy as npimport matplotlib.pyplot as pltx0,x1=np.meshgrid(np.linspace(axis[0],axis[1],int((axis[1]-axis[0])*100)).reshape(-1,1),np.linspace(axis[2],axis[3], int((axis[3] - axis[2]) * 100)).reshape(-1,1))x_new=np.c_[x0.ravel(),x1.ravel()]y_pre=model.predict(x_new)zz=y_pre.reshape(x0.shape)from matplotlib.colors import ListedColormapcus=ListedColormap(["#EF9A9A","#FFF59D","#90CAF9"])plt.contourf(x0,x1,zz,cmap=cus)y=d.targetfrom sklearn.model_selection import train_test_splitx_train,x_test,y_train,y_test=train_test_split(x,y,random_state=666)from sklearn.linear_model import LogisticRegressionprint(log_reg.score(x_test,y_test))plot_decision_boundary(log_reg,axis=[4,9,1,5])plt.scatter(x[y==0,0],x[y==0,1],color="r")plt.scatter(x[y==1,0],x[y==1,1],color="g")plt.scatter(x[y==2,0],x[y==2,1],color="b")plt.show()print(log_reg1.score(x_test,y_test))plot_decision_boundary(log_reg1,axis=[4,9,1,5])plt.scatter(x[y==0,0],x[y==0,1],color="r")plt.scatter(x[y==1,0],x[y==1,1],color="g")plt.scatter(x[y==2,0],x[y==2,1],color="b")plt.show()y=d.targetfrom sklearn.model_selection import train_test_splitx_train,x_test,y_train,y_test=train_test_split(x,y,random_state=666)from sklearn.linear_model import LogisticRegression#OVR⽅式的调⽤-默认胡⽅式log_reg=LogisticRegression() #不输⼊参数时,默认情况下是OVR⽅式log_reg.fit(x_train,y_train)print(log_reg.score(x_test,y_test))#采⽤OVO的⽅式进⾏逻辑回归函数参数的定义,结果明显好于OVR⽅式log_reg1=LogisticRegression(multi_class="multinomial",solver="newton-cg") log_reg1.fit(x_train,y_train)print(log_reg1.score(x_test,y_test))实现结果如下所⽰:。
sklearn iris 案例
Scikit-learn Iris 数据集:机器学习中的经典案例研究
Scikit-learn Iris 数据集是一个经典的机器学习数据集,它被广泛用于分类任务的教学和评估。
该数据集包含 150 个鸢尾花样本,属于三个不同的物种:山鸢尾、变色鸢尾和维吉尼亚鸢尾。
数据探索
数据集包含以下特征:
萼片长度 (sepal length)
萼片宽度 (sepal width)
花瓣长度 (petal length)
花瓣宽度 (petal width)
这些特征描述了鸢尾花的物理特性,可用于区分不同的物种。
数据可视化
为了可视化数据并理解不同物种之间的关系,我们可以使用散
点图或平行坐标图。
这些可视化工具有助于识别不同特征之间的模
式和相关性。
数据预处理
在将数据用于机器学习模型之前,需要进行一些预处理步骤。
这些步骤包括:
标准化:对特征进行缩放,使它们具有相同的量级。
划分训练集和测试集:将数据分成用于训练模型的训练集和用
于评估模型的测试集。
模型训练与评估
Scikit-learn 提供了各种分类算法,可用于训练鸢尾花数据集。
常见的算法包括:
逻辑回归
支持向量机
决策树
随机森林
训练模型后,使用测试集评估模型的性能。
评估指标包括:准确性:模型正确预测的样本的比例。
召回率:模型正确识别目标类的样本的比例。
F1 分数:准确率和召回率的加权平均值。
基于鸢尾花数据集的应用
鸢尾花数据集已被用于广泛的机器学习应用,包括:
分类:将鸢尾花样本分类到正确的物种。
特征重要性:确定不同特征对分类的影响程度。
模型选择:通过比较不同模型的性能来确定最佳模型。
超参数调优:优化模型的超参数以提高性能。
总结
Scikit-learn Iris 数据集是机器学习中的一个宝贵资源,它
提供了以下好处:
简单且易于理解:数据集相对较小,具有明确定义的特征和类别。
广泛使用:该数据集已被广泛用于教学和研究目的。
算法评估:该数据集可用于评估和比较不同的机器学习算法。
实际应用:基于鸢尾花数据集的模型可应用于实际分类任务中。
通过使用鸢尾花数据集,机器学习从业者可以加深对分类算法
的理解,并开发高效的模型来解决实际问题。