设计机器学习模型
介绍
在本指南中,我们将从头开始实现逻辑回归模型,并将其准确性与 scikit-learn 逻辑回归包进行比较。逻辑回归是机器学习分类技术的一部分,它解决了数据科学中的许多问题。
逻辑回归也是最简单和最常用的模型之一。它为任何二元分类问题实现了基线,其结果要么是True/False,要么是Yes/No。它可以预测邮件是否为垃圾邮件或预测个人是否患有糖尿病,但无法预测房价等。另一类是多项分类,其中确定两个以上的类别,例如天气是晴天、下雨还是潮湿,动物种类等。
在本指南中,我们将使用 UCI 机器学习库中的鸢尾花数据集探索已知的多类问题,根据给定的尺寸预测花的种类。
在本指南结束时...
- 通过可视化,您将能够从数据集中获取见解。可视化就像用文本数据讲述一个故事,使分析更加高效。
- 您将通过将数学步骤转换为运行代码从头开始构建 ML 算法。这也将更容易理解算法背后的机制。
- 您将成功设计一个逻辑回归机器学习模型,可以在不同的数据科学平台上展示。
那么让我们开始我们的旅程吧!
数据集简介
鸢尾花数据集包含三种鸢尾花的观测数据:山鸢尾 (Iris-setosa)、变色鸢尾 (Iris-versicolor ) 和维吉尼亚鸢尾 (Iris-virginica)。
每个物种有 50 个观测点,总共 150 个观测点,每个观测点有 4 个特征(萼片长度、萼片宽度、花瓣长度、花瓣宽度)。基于上述四个特征的组合,数据科学家 RA Fisher 开发了一个线性判别模型来区分各个物种。
在开始之前,我们需要定义一些 ML 术语。
属性(特征):属性是数据集中用于确定分类的一系列规格。在本例中,属性是花瓣和萼片的长度和宽度。
目标变量:在 ML 上下文中,这是作为或应该是输出的变量。此处的目标变量是三种花卉。
# import libraries
from subprocess import check_output
import numpy as np # linear algebra
import pandas as pd # data processing
import warnings
warnings.filterwarnings('ignore') #ignore warnings
from math import ceil
#Visualization
import matplotlib.pyplot as plt
import seaborn as sb
from sklearn.metrics import confusion_matrix #Confusion matrix
from sklearn.metrics import accuracy_score # Accuracy score
# Spliting training and testing
from sklearn.model_selection import train_test_split
#Advanced optimization
from scipy import optimize as op
加载和预览数据
# Loading the data
data_iris = pd.read_csv('Iris.csv') # If your input csv file is placed with working directory
# data_iris=pd.read_csv('../input/Iris.csv') # Enter the path of the directory where input csv is stored
data_iris.head() # first 5 entries of the dataset
ID | 萼片长厘米 | 萼片宽 | 花瓣长度厘米 | 花瓣寬闊 | 物种 | |
---|---|---|---|---|---|---|
0 | 1 | 5.1 | 3.5 | 1.4 | 0.2 | 鸢尾 |
1 | 2 | 4.9 | 3.0 | 1.4 | 0.2 | 鸢尾 |
2 | 3 | 4.7 | 3.2 | 1.3 | 0.2 | 鸢尾 |
3 | 4 | 4.6 | 3.1 | 1.5 | 0.2 | 鸢尾 |
4 | 5 | 5.0 | 3.6 | 1.4 | 0.2 | 鸢尾 |
data_iris.tail() # last 5 entries of dataset
ID | 萼片长厘米 | 萼片宽 | 花瓣长度厘米 | 花瓣寬闊 | 物种 | |
---|---|---|---|---|---|---|
145 | 146 | 6.7 | 3.0 | 5.2 | 2.3 | 维吉尼亚鸢尾 |
146 | 147 | 6.3 | 2.5 | 5.0 | 1.9 | 维吉尼亚鸢尾 |
147 | 148 | 6.5 | 3.0 | 5.2 | 2.0 | 维吉尼亚鸢尾 |
148 | 149 | 6.2 | 3.4 | 5.4 | 2.3 | 维吉尼亚鸢尾 |
149 | 150 | 5.9 | 3.0 | 5.1 | 1.8 | 维吉尼亚鸢尾 |
data_iris.info()
以下命令给出所有 150 个观测值的描述性统计数据(百分位数、平均值、标准差)。
data_iris.describe()
ID | 萼片长厘米 | 萼片宽 | 花瓣长度厘米 | 花瓣寬闊 | |
---|---|---|---|---|---|
数数 | 150.000000 | 150.000000 | 150.000000 | 150.000000 | 150.000000 |
意思是 | 75.500000 | 5.843333 | 3.054000 | 3.758667 | 1.198667 |
标准 | 43.445368 | 0.828066 | 0.433594 | 1.764420 | 0.763161 |
分钟 | 1.000000 | 4.300000 | 2.000000 | 1.000000 | 0.100000 |
25% | 38.250000 | 5.100000 | 2.800000 | 1.600000 | 0.300000 |
50% | 75.500000 | 5.800000 | 3.000000 | 4.350000 | 1.300000 |
75% | 112.750000 | 6.400000 | 3.300000 | 5.100000 | 1.800000 |
最大限度 | 150.000000 | 7.900000 | 4.400000 | 6.900000 | 2.500000 |
data_iris['Species'].value_counts()
Iris-setosa 50
Iris-virginica 50
Iris-versicolor 50
Name: Species, dtype: int64
免责声明:本内容来源于第三方作者授权、网友推荐或互联网整理,旨在为广大用户提供学习与参考之用。所有文本和图片版权归原创网站或作者本人所有,其观点并不代表本站立场。如有任何版权侵犯或转载不当之情况,请与我们取得联系,我们将尽快进行相关处理与修改。感谢您的理解与支持!
请先 登录后发表评论 ~