前言
基于
- Python scikit-learn机器学习库
- 感谢scikit-learn中官方文文档
目的
- 手动搭建自己的机器学习解决方案.
- 研究全球气候变暖
概念
机器学习
Machine Learning we also call as Predictive Analytics,Statistical Learning.
早期
我们用if和else制定人为规则,比如根据关键词黑名单过滤垃圾邮件.
缺点
但是一套规则一次只能用于一个领域.需求稍有变化就得重写整个系统.
其次制定规则的人必须对该领域的理解非常深刻,比如人脸识别规则.
监督学习
比如我们要获得信用卡诈骗评估系统的机器学习模型,就需要输入所有欺诈行为和非欺诈行为的输入-输出对
无监督学习
只有输入,未知输出.但是输出一定与输入有相同或相关的格式,范畴,概念.
样本
不管何种算法,都需要喂数据
样本Sample
一个样本就是一条input-output对.我们先把数据处理为计算机可理解的形式就是一个将数据转化为表格的过程.
一个样本对应表格中的一行记录row.
样本的不同特征feature对应表格的不同column属性.
选择良好的特征,并收集到正确的数据对算法质量至关重要.比如我们想预测一个人的性别只收集他的姓是没有用的,正确的做法是以他的名为特征.
graph TB
要解决的任务-->输入的数据类型
输入的数据类型-->恰当的特征
恰当的特征-->合适的输入集
合适的输入集-->算法
算法-->要解决的任务
Python
- 既有通用编程语言的强大,又有特点领域脚本语言的易用性.
- 还可以创建复杂的Graphical User Interface和灵活的Web服务
Numpy与Scipy
Numpy就是创建数组,再表现为矩阵的python科学计算库
# 利用array创建二维数组
x = numpy.array([[1,2,3],[4,5,6]])
print(x)
效果:
# 利用eye创建四维对角线Sparse_Matrix的稠密表示
x = numpy.eye(4)
print(x)
效果:
# 创建Sparse_Matrix的CSR表示
x = numpy.eye(4)
sparse_matrix = sparse.csr_matrix(x)
print(sparse_matrix)
效果:
# 利用ones批量创建元素都为1的一维数组
data = numpy.ones(4)
print(data)
效果:
# 利用arange批量创建0起的自然排序的一维数组
rows = numpy.arange(4)
print(rows)
效果:
# 利用sparse.coo_matrix((data,(row,column)))按坐标设置式创建矩阵
# 未设置矩阵部分默认为0
data = numpy.ones(4)
rows = numpy.arange(4)
columns = numpy.arange(4)
coo_matrix = sparse.coo_matrix((data,(rows,columns)))
# coo_matrix直接就是稀疏矩阵的稀疏表示.只输出非0的坐标与对应的元素
print(coo_matrix)
总结:一维转二维
Matplotlib
import matplotlib.pyplot as plt
import numpy as np
import matplotlib
# 设置字体实例myfont
myfont = matplotlib.font_manager.FontProperties(fname=r'/Users/huangmengyao/Library/Fonts/msyh.ttf')
x = np.linspace(-10, 10, 100)
y = np.sin(x)
plt.plot(x,y,marker="x",)
plt.title("y=sin(x)", fontproperties=myfont)
plt.xlabel("x轴", fontproperties=myfont)
plt.ylabel("y轴", fontproperties=myfont)
plt.show()
效果:
Pandas
数据查询与连接神器
利用DataFrame格式化排版数据处理(查询)结果
import pandas as pd
from IPython.display import display
# 一个Key-Value对就是一个column
data = {
'Name':["John", "Anna", "Peter"], 'Location' :["New York", "Paris", "Berlin"], 'Age': [24, 13, 53]
}
data_pandas = pd.DataFrame(data)
display(data_pandas)
效果:
import pandas as pd
from IPython.display import display
# 一个Key-Value对就是一个column
data = {
'Name':["John", "Anna", "Peter"], 'Location' :["New York", "Paris", "Berlin"], 'Age': [24, 13, 53]
}
data_pandas = pd.DataFrame(data)
# 找出所有满足某类要求的记录rows
display(data_pandas.Age > 30)
效果:
import pandas as pd
from IPython.display import display
# 一个Key-Value对就是一个column
data = {
'Name':["John", "Anna", "Peter"], 'Location' :["New York", "Paris", "Berlin"], 'Age': [24, 13, 53]
}
data_pandas = pd.DataFrame(data)
# 根据满足要求的记录rows显示结果
display(data_pandas[data_pandas.Age > 30])
效果: