**

**

机器学习小白入门,在看吴恩达机器学习课程的同时找到了课后的练习。开贴用于记录学习(copy)过程。
学习参考:吴恩达机器学习ex1

单变量线性回归

题目描述:在本部分的练习中,您将使用一个变量实现线性回归,以预测食品卡车的利润。假设你是一家餐馆的首席执行官,正在考虑不同的城市开设一个新的分店。该连锁店已经在各个城市拥有卡车,而且你有来自城市的利润和人口数据。
您希望使用这些数据来帮助您选择将哪个城市扩展到下一个城市。
数据集ex1data.txt见最后

**

1、导入工具包

**

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

**

2、读取数据

**
由于我是使用vitu.ai社区进行代码的编写,所以要先将数据集导入

path = 'ex1data.txt'
data = pd.read_csv(path,header=None,names=['Population','Profit'])
data.head()

**

3、数据可视化

**

data.plot(kind='scatter', x='Population', y='Profit', figsize=(12,8))
plt.show()


**

4、梯度下降

**
这个部分需要在现有数据集上,训练线性回归的参数θ。

加入一列x,用于更新θ0,然后我们将θ初始化为0,学习率初始化为0.01,迭代次数为1500次.

data.insert(0, 'Ones', 1)

4.1进行变量初始化

# 初始化X和y
cols = data.shape[1]
X = data.iloc[:,:-1]#X是data里的除最后列
y = data.iloc[:,cols-1:cols]#y是data最后一列

观察X(训练集)和y(目标变量)是否正确

X.head()#head()是观察前5行

y.head()


代价函数应该是numpy矩阵,所以我们需要转换X和Y,然后才能使用它们。 我们还需要初始化theta。

X = np.matrix(X.values)
y = np.matrix(y.values)
theta = np.matrix(np.array([0,0]))

4.2计算代价函数(θ初始值为0)

def computeCost(X, y, theta):inner = np.power(((X * theta.T) - y), 2)return np.sum(inner) / (2 * len(X))
#这个部分计算J(Ѳ),X是矩阵
computeCost(X, y, theta)

答案

4.3梯度下降

变化θ的值来使J(θ)变化,θ的最终结果将用来预测小吃店在35000及70000人城市规模的利润。

def gradientDescent(X, y, theta, alpha, iters):temp = np.matrix(np.zeros(theta.shape))parameters = int(theta.ravel().shape[1])cost = np.zeros(iters)for i in range(iters):error = (X * theta.T) - yfor j in range(parameters):term = np.multiply(error, X[:,j])temp[0,j] = theta[0,j] - ((alpha / len(X)) * np.sum(term))theta = tempcost[i] = computeCost(X, y, theta)return theta, cost
#这个部分实现了Ѳ的更新

初始化学习速率以及要执行的迭代次数

alpha = 0.01
iters = 1500

运行梯度下降算法来使参数θ适合于训练集

g, cost = gradientDescent(X, y, theta, alpha, iters)
g

predict1 = [1,3.5]*g.T
print("predict1:",predict1)
predict2 = [1,7]*g.T
print("predict2:",predict2)
#预测35000和70000城市规模的小吃摊利润

x = np.linspace(data.Population.min(), data.Population.max(), 100)
f = g[0, 0] + (g[0, 1] * x)fig, ax = plt.subplots(figsize=(12,8))
ax.plot(x, f, 'r', label='Prediction')
ax.scatter(data.Population, data.Profit, label='Traning Data')
ax.legend(loc=2)
ax.set_xlabel('Population')
ax.set_ylabel('Profit')
ax.set_title('Predicted Profit vs. Population Size')
plt.show()
#原始数据以及拟合的直线

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
path = 'ex1data.txt'
data = pd.read_csv(path,header=None,names=['Population','Profit'])
data.head()
data.plot(kind='scatter', x='Population', y='Profit', figsize=(12,8))
plt.show()
data.insert(0, 'Ones', 1)
cols = data.shape[1]
X = data.iloc[:,:-1]#X是data里的除最后列
y = data.iloc[:,cols-1:cols]#y是data最后一列
X.head()#head()是观察前5行
y.head()
X = np.matrix(X.values)
y = np.matrix(y.values)
theta = np.matrix(np.array([0,0]))
def computeCost(X, y, theta):inner = np.power(((X * theta.T) - y), 2)return np.sum(inner) / (2 * len(X))
#这个部分计算J(Ѳ),X是矩阵
computeCost(X, y, theta)
def gradientDescent(X, y, theta, alpha, iters):temp = np.matrix(np.zeros(theta.shape))parameters = int(theta.ravel().shape[1])cost = np.zeros(iters)for i in range(iters):error = (X * theta.T) - yfor j in range(parameters):term = np.multiply(error, X[:,j])temp[0,j] = theta[0,j] - ((alpha / len(X)) * np.sum(term))theta = tempcost[i] = computeCost(X, y, theta)return theta, cost
#这个部分实现了Ѳ的更新
alpha = 0.01
iters = 1500
g, cost = gradientDescent(X, y, theta, alpha, iters)
g
predict1 = [1,3.5]*g.T
print("predict1:",predict1)
predict2 = [1,7]*g.T
print("predict2:",predict2)
#预测35000和70000城市规模的小吃摊利润
x = np.linspace(data.Population.min(), data.Population.max(), 100)
f = g[0, 0] + (g[0, 1] * x)fig, ax = plt.subplots(figsize=(12,8))
ax.plot(x, f, 'r', label='Prediction')
ax.scatter(data.Population, data.Profit, label='Traning Data')
ax.legend(loc=2)
ax.set_xlabel('Population')
ax.set_ylabel('Profit')
ax.set_title('Predicted Profit vs. Population Size')
plt.show()
#原始数据以及拟合的直线

数据ex1data.txt

6.1101,17.592
5.5277,9.1302
8.5186,13.662
7.0032,11.854
5.8598,6.8233
8.3829,11.886
7.4764,4.3483
8.5781,12
6.4862,6.5987
5.0546,3.8166
5.7107,3.2522
14.164,15.505
5.734,3.1551
8.4084,7.2258
5.6407,0.71618
5.3794,3.5129
6.3654,5.3048
5.1301,0.56077
6.4296,3.6518
7.0708,5.3893
6.1891,3.1386
20.27,21.767
5.4901,4.263
6.3261,5.1875
5.5649,3.0825
18.945,22.638
12.828,13.501
10.957,7.0467
13.176,14.692
22.203,24.147
5.2524,-1.22
6.5894,5.9966
9.2482,12.134
5.8918,1.8495
8.2111,6.5426
7.9334,4.5623
8.0959,4.1164
5.6063,3.3928
12.836,10.117
6.3534,5.4974
5.4069,0.55657
6.8825,3.9115
11.708,5.3854
5.7737,2.4406
7.8247,6.7318
7.0931,1.0463
5.0702,5.1337
5.8014,1.844
11.7,8.0043
5.5416,1.0179
7.5402,6.7504
5.3077,1.8396
7.4239,4.2885
7.6031,4.9981
6.3328,1.4233
6.3589,-1.4211
6.2742,2.4756
5.6397,4.6042
9.3102,3.9624
9.4536,5.4141
8.8254,5.1694
5.1793,-0.74279
21.279,17.929
14.908,12.054
18.959,17.054
7.2182,4.8852
8.2951,5.7442
10.236,7.7754
5.4994,1.0173
20.341,20.992
10.136,6.6799
7.3345,4.0259
6.0062,1.2784
7.2259,3.3411
5.0269,-2.6807
6.5479,0.29678
7.5386,3.8845
5.0365,5.7014
10.274,6.7526
5.1077,2.0576
5.7292,0.47953
5.1884,0.20421
6.3557,0.67861
9.7687,7.5435
6.5159,5.3436
8.5172,4.2415
9.1802,6.7981
6.002,0.92695
5.5204,0.152
5.0594,2.8214
5.7077,1.8451
7.6366,4.2959
5.8707,7.2029
5.3054,1.9869
8.2934,0.14454
13.394,9.0551
5.4369,0.61705

吴恩达机器学习ex1 Python实现相关推荐

  1. 吴恩达机器学习ex1——通过人口预测小摊经济状况

    吴恩达机器学习ex1 完整代码 代码输出 完整代码 import numpy as np import pandas as pd import matplotlib.pyplot as plt#获取一 ...

  2. 吴恩达机器学习作业Python实现(三):多类分类和前馈神经网络

    吴恩达机器学习系列作业目录 1 多类分类(多个logistic回归) 我们将扩展我们在练习2中写的logistic回归的实现,并将其应用于一对多的分类(不止两个类别). import numpy as ...

  3. 吴恩达机器学习作业Python实现(二):logistic回归

    吴恩达机器学习系列作业目录 1 Logistic regression 在这部分的练习中,你将建立一个逻辑回归模型来预测一个学生是否能进入大学.假设你是一所大学的行政管理人员,你想根据两门考试的结果, ...

  4. 吴恩达机器学习作业Python实现(八):异常检测和推荐系统

    吴恩达机器学习系列作业目录 1 Anomaly detection 这部分,您将实现一个异常检测算法来检测服务器计算机中的异常行为.他的特征是测量每个服务器的响应速度(mb/s)和延迟(ms).当你的 ...

  5. 吴恩达机器学习作业Python实现(七):K-means和PCA主成分分析

    吴恩达机器学习系列作业目录 1 K-means Clustering 在这个练习中,您将实现K-means算法并将其用于图像压缩.通过减少图像中出现的颜色的数量,只剩下那些在图像中最常见的颜色. 1. ...

  6. 吴恩达机器学习作业Python实现(六):SVM支持向量机

    吴恩达机器学习系列作业目录 1 Support Vector Machines 1.1 Example Dataset 1 %matplotlib inline import numpy as np ...

  7. 吴恩达机器学习作业Python实现(五):偏差和方差

    吴恩达机器学习系列作业目录 在本练习中,您将实现正则化的线性回归和多项式回归,并使用它来研究具有不同偏差-方差属性的模型 1 Regularized Linear Regression 正则线性回归 ...

  8. 吴恩达机器学习作业Python实现(四):神经网络(反向传播)

    吴恩达机器学习系列作业目录 1 Neural Networks 神经网络 在这个练习中,你将实现反向传播算法来学习神经网络的参数.依旧是上次预测手写数数字的例子. 1.1 Visualizing th ...

  9. 吴恩达机器学习Ex1多元回归部分

    多元线性回归 提交作业情况: 背景:预测房价 数据集:房屋大小,卧室的数量,房价. Loading data ... First 10 examples from the dataset: x = [ ...

最新文章

  1. python的range()和list操作
  2. 如何使用区块链技术进行项目开发
  3. WPF--动态添加控件、访问控件
  4. epoll与fork
  5. MSP430F5529 DriverLib 库函数学习笔记(九)SPI
  6. WPF快速指导2:模板
  7. spark学习-Spark算子Transformations和Action使用大全(Transformations章(二))
  8. Java虚拟机(一)——内存管理
  9. python禁用键盘鼠标_在Python中禁用或锁定鼠标和键盘?
  10. (三)映射对象标识符(OID)
  11. [导入] [转]总结C++与C#的区别
  12. 如何在页面打开后根据条件让EditorGridPanel的某一行的复选框默认选中?
  13. 【PyCharm】PyCharm破解版在系统崩溃后无法启动
  14. 字体图标的设置(阿里巴巴矢量图库的使用)
  15. 自然语言处理NLP开源软件工具包
  16. linux枪战游戏,AstroMenace:好玩的太空射击游戏
  17. oracle添加redo,添加redolog组成员
  18. CTA 认证android平台 彩信/ MMS 受控原理
  19. Spreadsheet电子表格控件安装及用法总结
  20. 关于802.11ax

热门文章

  1. optitrack学习(2):Optitrack系统架构与数据流
  2. NetScaler 12.1 发布
  3. Android qq消息气泡实现效果,BezierDemo源码解析-实现qq消息气泡拖拽消失的效果
  4. 写论文常见调格式加引文等问题
  5. realtek无线网卡linux,818b Realtek无线网卡上网问题
  6. Java JDBC 高校党务管理系统的设计与实现
  7. oracle 在 MyBatis 中使用 like
  8. java泛型 ppt_第7章-Java集合与泛型-精品课件(PPT)-精品课件(PPT)最新版
  9. 太肝了,挑战扫雷世界纪录:扫雷自动化Python+OpenCV实战(附迪迦250G人工智能学习资料)
  10. 确保敏捷成功 - 构建敏捷基础