个人网站建设案例教程,中国有哪些企业网站,太平洋手机网报价大全,wordpress dms转载自 小白学数据#xff1a;教你用Python实现简单监督学习算法今天#xff0c;文摘菌想谈谈监督学习。监督学习作为运用最广泛的机器学习方法#xff0c;一直以来都是从数据挖掘信息的重要手段。即便是在无监督学习兴起的近日#xff0c;监督学习也依旧是入门机器学习的钥…转载自 小白学数据教你用Python实现简单监督学习算法今天文摘菌想谈谈监督学习。监督学习作为运用最广泛的机器学习方法一直以来都是从数据挖掘信息的重要手段。即便是在无监督学习兴起的近日监督学习也依旧是入门机器学习的钥匙。这篇监督学习教程适用于刚入门机器学习的小白。当然了如果你已经熟练掌握监督学习也不妨快速浏览这篇教程检验一下自己的理解程度~什么是监督学习在监督学习中我们首先导入包含有训练属性和目标属性的数据集。监督学习算法会从数据集中学习得出训练样本和其目标变量之间的关系然后将学习到的关系对新样本未被标记的样本进行分类。为了阐明监督学习的工作原理我们用根据学生学习时间预测其考试成绩的例子来说明。用数学表示即Y f(X) C其中
f表示学生学习时间和考试成绩之间的关系X表示输入学习小时数Y表示输出考试分数C表示随机误差监督学习算法的终极目标是给出新的输入X使得预测结果Y的准确率最大。有很多方法可以实现有监督学习我们将探讨几种最常用的方法。根据给定的数据集机器学习可以分为两大类分类Classification和回归Regression。如果给定的数据集的输出值是类别那么待解决是分类问题。如果给定的数据集的输出值是连续的那么该问题是回归问题。举两个例子
分类判断是猫还是狗。
回归房子的售价是多少分类考虑这样一个例子医学研究员想要分析乳腺癌数据用于预测患者使用三种治疗方案中的哪一种。该数据分析问题就属于分类问题通过建立分类模型来预测类别标签例如“治疗方案A”、“治疗方案B”或者“治疗方案C”。分类是一个预测类别标签的预测问题这些类别标签都是离散和无序的。分类包含两个步骤学习步骤和分类步骤。分类方法和选择最优方法一些常见的分类算法
K近邻决策树朴素贝叶斯支持向量机在学习步骤中分类模型通过分析训练集数据建立一个分类器。在分类步骤中分类器对给定的数据进行分类。用于分析的数据集包含数据和其对应的标签被划分为训练集和测试集。训练集从分析用的数据集中随机抽取。剩下的数据集构成测试集。测试集和训练集相互独立即测试集中的数据不会被构建于分类器。测试集用于评价分类器的预测精度。分类器的精度用测试集中预测正确的百分比表示。为了获得更高的精度最好的方法是测试多个不同的算法同时对每个算法尝试不同的参数。可以通过交互检验选择最好的算法和参数。对于给定问题在选取算法时算法的精度、训练时间、线性、参数数目以及特殊情况都要考虑在内。在IRIS数据集上实现sklearn中的KNN并对给定的输入进行花卉类型分类。首先要应用机器学习算法我们需要了解给定数据集的组成。在这个例子中我们使用内置在sklearn包中的IRIS数据集。现在让我们使用代码查看IRIS数据集。请确保你的电脑上成功安装了Python。然后通过PIP安装下面这些python库pip install pandaspip install matplotlibpip install scikit-learn在下面这段代码中我们使用pandas中的一些方法查看IRIS数据集的一些属性。from sklearn import datasetsimport pandas as pdimport matplotlib.pyplot as plt# Loading IRIS dataset from scikit-learn object into iris variable.iris datasets.load_iris()# Prints the type/type object of irisprint(type(iris))# class sklearn.datasets.base.Bunch# prints the dictionary keys of iris dataprint(iris.keys())# prints the type/type object of given attributesprint(type(iris.data), type(iris.target))# prints the no of rows and columns in the datasetprint(iris.data.shape)# prints the target set of the dataprint(iris.target_names)# Load iris training datasetX iris.data# Load iris target setY iris.target# Convert datasets type into dataframedf pd.DataFrame(X, columnsiris.feature_names)# Print the first five tuples of dataframe.print(df.head())输出class ‘sklearn.datasets.base.Bunch’dict_keys([‘data’, ‘target’, ‘target_names’, ‘DESCR’, ‘feature_names’])]class ‘numpy.ndarray’ class ‘numpy.ndarray’(150, 4)[‘setosa’ ‘versicolor’ ‘virginica’]sepal length (cm) sepal width (cm) petal length (cm) petal width (cm)0 5.1 3.5 1.4 0.21 4.9 3.0 1.4 0.22 4.7 3.2 1.3 0.23 4.6 3.1 1.5 0.24 5.0 3.6 1.4 0.2Sklearn中的K最近邻算法如果一个算法仅存储训练集数据并等待测试集数据的给出那么这个算法便可认为是一个“懒惰学习法”。直到给定测试集数据它才会根据它与存储的训练集样本的相似性来对新样本进行分类。K近邻分类器就是一个懒惰学习法。K近邻基于类比学习比较一个测试样本和与之相似训练集数据。训练集有n个属性表征。每个样本由n维空间中的一个点表示。这样训练集中的所有样本都储存在n维模式空间中。当给定一个未知的样本K近邻分类器在模式空间中搜寻和未知样本最接近的k个训练样本。这k个训练样本就是未知样本的k个近邻。“接近度”用距离来度量例如欧几里得距离。较好的K值可以通过实验确定。在下面这段代码中我们导入KNN分类器将之应用到我们的输入数据中然后对花卉进行分类。from sklearn import datasetsfrom sklearn.neighbors import KNeighborsClassifier# Load iris dataset from sklearniris datasets.load_iris()# Declare an of the KNN classifier class with the value with neighbors.knn KNeighborsClassifier(n_neighbors6)# Fit the model with training data and target valuesknn.fit(iris[data], iris[target])# Provide data whose class labels are to be predictedX [ [5.9, 1.0, 5.1, 1.8], [3.4, 2.0, 1.1, 4.8],]# Prints the data providedprint(X)# Store predicted class labels of Xprediction knn.predict(X)# Prints the predicted class labels of Xprint(prediction)输出[1 1]其中012分别代表不同的花。在该例子中对于给定的输入KNN分类器将它们都预测成为1这个类别的花。KNN对IRIS数据集分类的直观可视化回归回归通常被定义为确定两个或多个变量之间的相关关系。例如你要通过给定的数据X预测一个人的收入。这里目标变量是指该变量是我们关心以及想要预测的未知变量而连续是指Y的取值没有间隔。预测收入是一个经典的回归问题。你的输入应当包含所有与收入相关的个人信息比如特征这些信息可以预测收入例如工作时长、教育经历、职称以及他的曾住地等。回归模型一些常见的回归模型有
线性回归逻辑回归多项式回归线性回归通过拟合一条直线回归线来建立因变量Y与一个或多个自变量X之间关系。用数学公示表示即h(xi) βo β1 * xi e其中
βo是截距β1是斜率e是误差项用图表示即逻辑回归是一种预测类别的算法用于找出特征和特定输出概率之间关系。当然了我们也可以把逻辑回归归类为分类算法但就像我们刚才所说逻辑回归的输出其实是目标对象属于某一类别的概率。既然概率是连续的我们依旧把逻辑回归算作回归算法。用数学公式表示p(X) βo β1 * X其中p(x) p(y 1 | x)图形表示为多项式回归是一种将自变量x与因变量y的关系拟合为x的n阶多项式的回归算法。解决线性回归问题我们有数据集X以及对应的目标值Y我们使用普通最小二乘法通过最小化预测误差来拟合线性模型给定的数据集同样划分为训练集和测试集。训练集由已知标签的样本组成因此算法能够通过这些已知标签的样本来学习。测试集样本不包含标签你并不知道你试图预测样本的标签值。我们将选择一个需要训练的特征应用线性回归方法拟合训练数据然后预测测试集的输出。用Sklearn实现线性回归from sklearn import datasets, linear_modelimport matplotlib.pyplot as pltimport numpy as np# Load the diabetes datasetdiabetes datasets.load_diabetes()# Use only one feature for trainingdiabetes_X diabetes.data[:, np.newaxis, 2]# Split the data into training/testing setsdiabetes_X_train diabetes_X[:-20]diabetes_X_test diabetes_X[-20:]# Split the targets into training/testing setsdiabetes_y_train diabetes.target[:-20]diabetes_y_test diabetes.target[-20:]# Create linear regression objectregr linear_model.LinearRegression()# Train the model using the training setsregr.fit(diabetes_X_train, diabetes_y_train)# Input dataprint(Input Values)print(diabetes_X_test)# Make predictions using the testing setdiabetes_y_pred regr.predict(diabetes_X_test)# Predicted Dataprint(Predicted Output Values)print(diabetes_y_pred)# Plot outputsplt.scatter(diabetes_X_test, diabetes_y_test, colorblack)plt.plot(diabetes_X_test, diabetes_y_pred, colorred, linewidth1)plt.show()输入输入值[ [ 0.07786339] [-0.03961813] [ 0.01103904] [-0.04069594] [-0.03422907] [ 0.00564998] [ 0.08864151] [-0.03315126] [-0.05686312] [-0.03099563] [ 0.05522933] [-0.06009656] [ 0.00133873] [-0.02345095] [-0.07410811] [ 0.01966154] [-0.01590626] [-0.01590626] [ 0.03906215] [-0.0730303 ] ]预测的输出值[ 225.9732401 115.74763374 163.27610621 114.73638965 120.80385422 158.21988574 236.08568105 121.81509832 99.56772822 123.83758651 204.73711411 96.53399594 154.17490936 130.91629517 83.3878227 171.36605897 137.99500384 137.99500384 189.56845268 84.3990668 ]结语提一下常用的监督学习的python库
Scikit-LearnTensorflowPytorch最后布置一个作业请根据文章内容用监督学习推测一下今天的文摘菌是哪位帅哥小编~原文链接https://towardsdatascience.com/supervised-learning-with-python-cf2c1ae543c1