线性回归

机器学习案例实战(4)——Kaggle竞赛案例-泰=泰坦尼克号获救预测

不问归期 提交于 2019-12-04 00:29:52
1 表格数据中显示label列0未获救,1是获救。pclass是舱位等级。姓名,性别,年龄,sibsp:兄弟姐妹个数,船票编号,父母,价位,不同的上传地点。有了这些数据进行一个二分类。 2 用程序分析 使用ipython notebook比较方便可视化,便于展示。其他也可以。 pandas库是做分析处理的,先导入pandas库。pandas.read_csv(“”)把数据读进来就是一个行和列的结构,把这个赋给了一个变量titanic。通过变量调.head,即titanic.head()打印出前几行,5是默认的,想显示出几行括号中写几。 继续对titanic调describe,titanic.describe,按列统计特征,passenger总个数,均值,方差,最大值最小值。age列个数少,说明有缺省。 机器学习算法要求 输入的要求是一个矩阵,有缺失值之后就做不成矩阵了。 所以需要对数据进行预处理, 第一步:对缺失值进行填充,用均值填充。fillna就是填充,就是用age均值对age列进行填充。然后再describe,看到是891个。 3 机器学习不能处理string值,需要转换成int值或者float,成为机器学习可以处理的数值型的。0表示male,1表示female。 print titanic[“sex”].unique(),看这一列有几种可能性。 第二步:数值转换

【机器学习实践】泰坦尼克号乘客获救预测

我与影子孤独终老i 提交于 2019-12-04 00:27:49
目录 目的: 数据读取: 数据处理: 线性回归: 目的: 利用所给数据的特征来判断哪些人能够获救。 数据读取: titanic_train.csv: 训练集,共计891条数据 titanic_test.csv: 测试集,共计418条数据 我们使用pandas库来读取CSV数据。 这里使用read_csv所得到的是 <class 'pandas.core.frame.DataFrame'> 类型的数据, 关于DataFrame 的一些具体操作可以参考pandas的document。《 http://pandas.pydata.org/pandas-docs/stable/ 》 我们可以直接使用print 来输出完整的data_train。 当然也可使用 print(data_train.head(10)) 来输出前十条信息。 我们还可以使用info 和 discribe方法来对数据进行一个总览。 首先来看一下discribe方法的输出。 我们可以看到关于我们这一组数据的一些统计信息。 下面是info 方法。 从info的输出中我们可以看到,可以看出我们的数据共891行,11列 并且有三个属性是出现了缺失的,分别是Age,Cabin和Embarked, 其中,Age列缺失117条数据;Cabin列缺失687条数据;Embarked列缺失2条数据。 数据处理:

通俗地说逻辑回归【Logistic regression】算法(一)

半腔热情 提交于 2019-12-03 20:25:32
在说逻辑回归前,还是得提一提他的兄弟,线性回归。在某些地方,逻辑回归算法和线性回归算法是类似的。但它和线性回归最大的不同在于,逻辑回归是作用是分类的。 还记得之前说的吗,线性回归其实就是求出一条拟合空间中所有点的线。逻辑回归的本质其实也和线性回归一样,但它加了一个步骤,逻辑回归使用sigmoid函数转换线性回归的输出以返回概率值,然后可以将概率值映射到两个或更多个离散类。 如果给出学生的成绩,比较线性回归和逻辑回归的不同如下: 线性回归可以帮助我们以0-100的等级预测学生的测试分数。线性回归预测是连续的(某个范围内的数字)。 Logistic回归可以帮助预测学生是否通过。逻辑回归预测是离散的(仅允许特定值或类别)。我们还可以查看模型分类背后的概率值。 一.从回归到分类的核心 --Sigmoid Function 之前介绍线性回归的时候,它的函数是这样样子的: h(x)=θ0 + θ1 * x1 + θ2 * x2 + θ3 * x3 ... 但这样的函数是没办法进行分类的工作的,所以我们要借助一下其他函数,那就是Sigmoid Function。 我们先来看看这个Sigmoid Function长什么样,Sigmoid Function的数学公式是这样子的: 如果表示在平面坐标轴上呢,那它长这个样子。 这个Sigmoid Function可以将线性的值,映射到[0-1]这个范围中

线性回归模型

女生的网名这么多〃 提交于 2019-12-03 20:10:52
1、回归(regression)与 分类(Classification)区别,前者处理的是连续型数值变量。后者处理的是类别变量。 2、回归分析:建立方程模拟2个或多个变量之间关联关系。 3、简单线性回归:y=b1*x+b0 1) 参数b1,b0可以由如上公式计算出来,xi,yi为样本中各点。numpy实现简单线性回归方程。 # y = b1*x+b0 import numpy as np def fitSLR(x,y): n = len(x) fenzi = 0 fenmu = 0 for i in range(0,n): fenzi = fenzi + (x[i]- np.mean(x))*(y[i]- np.mean(y)) fenmu = fenmu + (x[i]- np.mean(x))**2 print(fenzi) print(fenmu) b1 = fenzi/float(fenmu) b0 = np.mean(y)- b1*np.mean(x) print(“b0:”,b0,"b1:",b1) return b0,b1 def predict(x,b0,b1): return b0+b1*x x = [1,3,2,1,3] y = [14,24,18,17,27] b0,b1 = fitSLR(x,y) x_test = 6 y_test = predict(x

线性回归和梯度下降

匿名 (未验证) 提交于 2019-12-03 00:41:02
在上一章我们说到,机器学习中主要的两个任务就是回归和分类。如果读者有高中数学基础,我们很容易回忆到我们高中学习过的一种回归方法―― 线性回归 。我们将这种方法泛化,就可以得到机器学习中的一种常见模型―― 线性模型 ,线性模型是 监督学习的一种 我们已经说过,我们要从数据集中训练出模型,每个数据可以视为 (属性,标签) f(x)=wTx+bf(x)=wTx+b 我们将这样的模型称为线性模型,不得不提的是,线性模型并不是只能进行线性分类,它具有很强的泛化能力,我们后面会提到。 我们注意到,在线性模型中,属性值都是 实数 属性离散,但是有序关系(可以比较) 属性离散,但是无序关系(不可比较) f(x)=wx+bf(x)=wx+b 其中w,x,b都是实数,相信这个模型大家在高中都学习过。在这里我们有两种方法求解这个模型,分别是 最小二乘法 和 梯度下降法 我们的目标是,求得适当的w和b,使得S最小,其中S是预测值和真值的差距平方和,亦称为 代价函数 其中的1n1n只是将代价函数值归一化的系数。 最小二乘法 梯度下降法 我们刚刚利用了方程的方法求得了单变量线性回归的模型。但是对于几百万,上亿的数据,这种方法太慢了,这时,我们可以使用 凸优化 中最常见的方法之一―― 梯度下降法 梯度下降法的相当于 我们下山的过程 给w、b随机赋初值,一般可以都设为0给w、b随机赋初值,一般可以都设为0 w

机器学习经典算法之(十八) Linear Regression

匿名 (未验证) 提交于 2019-12-03 00:30:01
一、线性回归简介: (Linear Regression) 是利用称为 线性回归方程 的最小平方函数对一个或多个自变量和 因变量 之间关系进行建模的一种 回归分析 。这种函数是一个或多个称为 回归系数 的模型参数的 线性组合 。只有一个自变量的情况称为简单回归 ,大于一个自变量情况的叫做多元回归。 y=2x+30, x 变量为体重 (kg) , y 代表身高( cm ) , 我们就能根据线性模型预测出 x =75 时的身高;对于上面的简单的例子来说,我们可以粗略把 y =2x+30 看成回归的模型;对于给予的每个人的体重都能预测出身高。 线性关系 ,则称为多元线性回归分析。 绝对误差 回归),或者在桥回归中最小化最小二乘 损失函数 的惩罚.相反,最小二乘逼近可以用来拟合那些非线性的模型 二、线性回归实现原理(代码参考:《机器学习实战》): import numpy as np import matplotlib.pyplot as plt #------------------------------------------------------------------------------ def loadDataSet(fileName): def standRegres(xArr,yArr): #2行100列数据*100行2列数据就是为了判断是否可逆。结果为:2行2列数据

线性回归曲线和过拟合判断

匿名 (未验证) 提交于 2019-12-03 00:15:02
import matplotlib . pyplot as plt import mglearn from scipy import sparse import numpy as np import matplotlib as mt import pandas as pd from IPython . display import display from sklearn . linear_model import LinearRegression from sklearn . model_selection import train_test_split #wave数据集 #wave数据集只有一个特征 #公式为y=w[0]x[0]+b #w为斜率,b为轴偏移或截距,分别在sklearn中使用 coef_[0], intercept_表示 mglearn . plots . plot_linear_regression_wave () plt . show () #boston数据集 #boston数据集有506个样本,105个特征 X , y = mglearn . datasets . load_extended_boston () X_train , X_test , y_train , y_test = train_test_split ( X , y , random

通俗得说线性回归算法(一)线性回归初步介绍

匿名 (未验证) 提交于 2019-12-03 00:14:01
相信大家都听过著名的博物学家,达尔文的大名,而今天这个故事的主人公就是他的表弟高尔顿。 高尔顿是一名生理学家,在1995年的时候,他研究了1078堆父子的身高,发现他们大致满足一条公式,那就是 Y=0.8567+0.516*x 这条式子中的x指的是父亲的身高,Y指的是儿子的身高。可以明显看出,这就是我们中学时代学的二元一次方程,反应在平面上就是 一条直线 。 通过这条公式,我们或许会直观得以为高个的父亲总会有高个的儿子,矮个的父亲会有矮个的儿子。但高尔顿进一步观察后发现,并非所有的情况都是这样的。特别高的父亲的儿子会比他父亲矮一些,特别矮的父亲的儿子会比他父亲高一些,父子不会说一直不断得更高或更矮下去。 这个现象,其实就是回归 。趋势不会一直持续下去,而是会回到某个中心。 通过这个故事,相信你已经明白了什么是线性回归,那么接下来我们就来说说更加详细的内容。 抛出问题:假设有这样的一些点,这些都是现有的数据,我们要找到拟合这些点的线,然后预测接下来的点。那我们要怎么找出这条线呢? h(x)=a0 + a1 * x(a1是斜率,a0是截距) 或者说换个问法,我们要怎么求出a_1和a_0呢? 第一次接触线性回归的同学可能不知道什么叫cost function,其实当碰到不知道的概念的时候,只要想清楚两件事,这个概念是什么,有什么用。想清楚这两点,起码就不会犯迷糊了。