从零开始机器学习

举报
盼盼 发表于 2021/10/12 21:27:04 2021/10/12
【摘要】 一、相关概念机器学习    机器学习并没有准确的定义,Arthur Samuel (1959) 定义机器学习为 'Field of study that gives computers the abilety to learn with out being explicitly programmed.'    比较新的定义来自Tom Mitchell (1998): A computer p...

一、相关概念
机器学习

    机器学习并没有准确的定义,Arthur Samuel (1959) 定义机器学习为 'Field of study that gives computers the abilety to learn with out being explicitly programmed.'
    比较新的定义来自Tom Mitchell (1998): A computer program is said to learn from experience E with respect to some task T and some performance measure P, if its performance on T, as measured by P, improves with experience E.

监督学习
回归(Regression)问题

    Regression: Predict continuous valued output
    假设你得知了房子的大小与价格的关系

    这个时候你可以选择是用直线或者二次函数或者其他的函数拟合数据,以此预测未知的数据,这也被称为回归(Regression)问题。虽然价格是离散的,但是我们可以将其视为实数

分类(classification)问题

    Classification: Discrete valued output(0 or 1 or more)
    假设得到了一组年龄(x2)和肿瘤大小(x1)与肿瘤是否良性(O or X)的关系

这个时候你可以拟合一个分类的函数,然后预测未知的数据,这时候未知的数据是一些离散的值。当然数据可以有许多特征,有很高的维度,预测的函数也不一定是可视化的。
无监督学习
聚类(clustering)问题

    假设给定一组数据但是并没有标签,需要程序自动分类,这是聚类

鸡尾酒会(cocktail)问题

    给定数据从中区分数据的结构,就像是鸡尾酒混在一起然后提取出不同的酒

关于model
线性回归 (Linear Regression)

    假如还是之前那个房价的预测,可以考虑先用简单的函数去拟合数据。比如 hθ(x) = θ0+θ1x, h 就是Hypothesis (假设), θ 被称为参数。我们要做的就是参数估计。我们想到的直观约束就是最小化这个式子 ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 \sum\limits_{i=1}^m \left( h_{\theta}(x^{(i)})-y^{(i)} \right)^{2} i=1∑m​(hθ​(x(i))−y(i))2

代价函数

J ( θ 0 , θ 1 ) = 1 2 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) 2 J \left( \theta_0, \theta_1 \right) = \frac{1}{2m}\sum\limits_{i=1}^m \left( h_{\theta}(x^{(i)})-y^{(i)} \right)^{2} J(θ0​,θ1​)=2m1​i=1∑m​(hθ​(x(i))−y(i))2
前面的系数是为了不让训练集的数量影响,这个也被称为 Squared error function (平方误差函数)
常见的代价函数(cost function)
附录
matplot绘图简介教程
最简单的一个绘图程序

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(-1, 1, 10) # x是-1到1的10个均匀点
y = 2*x
plt.plot(x, y)
plt.show()

   

逐步添加要素

x = np.linspace(-1, 1, 10)
y1 = 2*x
y2 = 2*x+1
plt.figure()
plt.plot(x,y1)

plt.figure(x, y2)
plt.plot(x, y1)

plt.show()

2. 设置坐标轴范围、描述、ticks

plt.xlim(-1, 2) # 改变x轴的范围
plt.ylabel('Price($) of house') # 改变y轴的描述
plt.xticks(np.linspace(-1, 1, 2)) # 原来x是10个点,现在改为两个点
# plt.xticks([-1, -0.5, 0, 0.5, 1],['a', 'b', 'c', 'd', 'e'])
# 如果用字代替ticks需要用两个列表对应起来


x轴的1后面出现一段空是因为xlim限制到2但是xticks改为1了
3. pandas读取本地文件

import pandas as pd 
import matplotlib.pyplot as plt 

path = 'ex1data1.txt' # 这是文件的路径
data = pd.read_csv(path, header=None, names=['size', 'price'])
# read_csv读取时会自动识别表头,数据有表头时不能设置header为空(默认读取第一行,即header=0);
# 数据无表头时,若不设置header,第一行数据会被视为表头,应传入names参数设置表头名称或设置header=None

data.plot(kind='scatter', x='size', y='price')
plt.xlabel('size of feet^2', size=18)
plt.ylabel('Price($) of house', size=18)
plt.show()

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。