机器学习大作业_第一章:《机器学习介绍》课程作业

Background

机器学习是人工智能(AI)的一部分,研究如何让计算机从数据学习某种规律。通过计算机程序根据数据去优化某一个评价指标。自动的从数据发现规律,使用这些规律做出预测。根据过去去预测未来。数据挖掘是从数据中发现信息,比对有关联的信息。大数据是各种来源的大量结构化(表格文档)和非结构化的数据(图片视频)。三者之间有交集并相互独立。

监督式学习:训练数据包含输入和预期的输出

非监督式学习:训练数据只有输入,没有预期的输出

机器学习的步骤包括:

数据获取--数据清洗--特征工程--预处理--选择机器学习模型--模型训练/模型调参--模型部署

Aim

根据已知的9个不同高度测量的气温值, 利用线性回归方法得出直线公式y = ax +b,a和b的值, 然后根据直线公式预测海拔8000米的气温。

Procedure

  1. 导入相关python模块:a. pandas用于数据导入及整理的模块。 b. numpy用于维度数组与矩阵运算。c. matplotlib.pyplot用于画图。d. LinearRegression用于线性回归计算。
  2. 利用pandas.read_csv导入海拔高度与气温的.csv数据表格。
  3. 利用matplotlib.pyplot模块将海拔高度与气温的关系表格可视化为图表。
  4. 利用LinearRegression线性回归模块对海拔高度与气温的数据进行线性回归并得出线性回归得出的直线公式。
  5. 将线性回归的直线可视化与海拔高度与气温的关系的散点图进行对比。
  6. 根据线性回归直线公式预测海拔8000米的气温

Result

表1. 海拔高度与气温的关系表(前4组)

height temperature

0 0.0 12.834044

1 500.0 10.190649

2 1000.0 5.500229

3 1500.0 2.854665

4 2000.0 -0.706488

70dd9561ae631d4e439b8d26932819e0.png
图1: 海拔高度与温度关系散点图

利用线性回归得出的线性模型为: Y = -0.0065695X + 12.719

其中a = -0.0065695, b = 12.719

34016129107d243da0aa9bb5824679ce.png
图2:线性回归模型与散点图对比

将海拔8000米的高度带入线性回归模型,得出气温为-39.838摄氏度。

Conclusion

根据已知9组数据和线性回归方法预测出海拔8000米时气温为-39.838摄氏度。

5c2a630076d981920c5c47177ef42555.png
图3:温度与海拔高度关系图

根据已知的实际测量值(见图3),在12000米内,温度与海拔高度基本为线性关系,所以可以判断线性回归模型与实际相符合。但是由于只有9组数据,数据量太小以及数据基本为低海拔高度的测量值,因此在预测时要根据对流层,平流层和高层大气划分海拔高度的预测范围,对于更高海拔的预测需要更大量的数据。

Code

# -*- coding: utf-8 -*-
"""
Created on Tue Jun 25 20:32:05 2019

@author: junru
"""

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression

data = pd.read_csv("height.vs.temperature.csv")

print(data.head())

print(data.columns)

plt.figure(figsize=(8, 4))
plt.scatter(data['height'], data['temperature'], c='black')
plt.ylabel('Temerature (Celsius)')
plt.xlabel('Height (Metre)')
plt.show()

X = data['height'].values.reshape(-1,1)
y = data['temperature'].values.reshape(-1,1)
reg = LinearRegression()
print(reg.fit(X, y))

print('a = {:.5}'.format(reg.coef_[0][0]))
print('b = {:.5}'.format(reg.intercept_[0]))
print('线性模型为: Y = {:.5}X + {:.5} '.format(reg.coef_[0][0], reg.intercept_[0]))

predictions = reg.predict(X)

plt.figure(figsize=(8, 4))
plt.scatter(data['height'], data['temperature'], c='black')
plt.plot(data['height'], predictions, c = 'blue', linewidth = 2)
plt.ylabel('Temerature (Celsius)')
plt.xlabel('Height (Metre)')
plt.show()

predictions = reg.predict([[8000]])
print('海拔8000米的高度,气温为{:.5}摄氏度'.format(predictions[0][0]))
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
作业一(Matlab) 假设x=(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20),y=( 2.94, 4.53, 5.96, 7.88, 9.02, 10.94, 12.14, 13.96, 14.74, 16.68, 17.79, 19.67, 21.20, 22.07, 23.75, 25.22, 27.17, 28.84, 29.84, 31.78).请写出拟合的直线方程,并画图(包括原数据点及拟合的直线),请打印出来。 请使用线性回归模型来拟合bodyfat数据。数据集介绍可阅读:https://www.mathworks.com/help/nnet/examples/body-fat-estimation.html 在matlab中,在命令行中输入[X,Y] = bodyfat_dataset; 即可获得一个拥有13个属性,252个样本的数据集。使用前200个样本来获得模型,并写出你所获得的模型。使用后52个样本做测试,汇报你所获得的泛化误差。 编程实现对数回归,并给出教材89页上的西瓜数据集3.0上的结果。要求采用4折交叉验证法来评估结果。因为此处一共17个样本,你可以去掉最后一个样本,也可以用所有数据,然后测试用5个样本。在汇报结果时,请说明你的选择。请在二维图上画出你的结果(用两种不同颜色或者形状来标注类别),同时打印出完整的代码。 作业二 采用信息增益准则,基于表4.2中编号为1、2、3、6、7、9、10、14、15、16、17的11个样本的色泽、根蒂、敲声、文理属性构建决策树。(本次作业可以用笔算,鼓励编程实现,但都需要列出主要步骤,其中log2(3)=1.585,log2(5)=2.322,log2(6)=2.585,log2(7)=2.807,log2(9)=3.17,log2(10)=3.322,log2(11)=3.459) 用表4.2中编号为4、5、8、11、12、13的样本做测试集,对上题的训练数据采用预剪枝策略构建决策树,并汇报验证集精度。 用表4.2中编号为4、5、8、11、12、13的样本做测试集,对题1所构建的决策树进行后剪枝,并汇报验证集精度。 作业三(Matlab) 试编程实现累积BP算法,在西瓜数据集2.0上(用训练数据)训练一个单隐层网络,用验证集计算出均方误差。要自己实现,不能直接调用现成的库函数。 作业四 下载并安装libsvm,http://www.csie.ntu.edu.tw/~cjlin/libsvm/ ,在西瓜数据集3.0a上分别用线性核训练一个SVM。用正类1-6和负类9-14作为训练集,其余作为测试集。C取不同的值,其它参数设为默认值。作出测试正确率随C取值变化的图,C=[1 100 10000 10^6 10^8]。 换成高斯核(宽度设为1),重复上题的步骤。 作业五 以西瓜数据集2.0(见教材76页表4.1)中样本1--16为训练集训练一个朴素贝叶斯分类器,对测试样本17进行分类。请写出详细的计算过程。 假设x_k是一个班上学生的分数,对应的分数及其分布是 x_1=30, P1=0.5,一共有14个学生; x_2=18, P2=mu,有6个学生; x_3=20, P3=2mu,有9个学生; x_4=23, P4=0.5-3mu,有10个学生; 通过最大对数似然法求出mu的值。 作业六(Python) 1 使用PCA对Yale人脸数据集进行降维,并分别观察前20、前100个特征向量所对应的图像。请随机选取3张照片来对比效果。数据集http://vision.ucsd.edu/content/yale-face-database

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值