根据麻瓜编程及习题整理
禁转
基本概念
人工智能
机器学习
实现人工智能的一种方法
深度学习
机器学习中的一类算法
特点:大数据,效果好,图像识别,语音识别
机器学习问题描述
- “学习”问题通常包括n个样本数据(训练样本)
- 每个样本包含的多个属性(多维数据)被称为“特征”
- 通过特定的算法从训练样本中学习到知识(信息),从而建立一个模型
- 然后预测未知数据(测试样本)的信息
概括:通过学习历史数据的特征构建模型预测未来数据
机器学习分类
根据训练样本是否包含标签分类:
监督学习
训练样本包含对应的“标签”
- 分类问题:样本标签属于两类/多类(离散),如人脸识别
- 回归问题:样本标签包括一个或多个连续变量(连续),如房价预测
无监督学习
训练样本的属性不包括对应的“标签”,如根据上网行为对客户分群从而进行精确营销等
无监督学习通常是通过聚类来将相似的样本聚在一起,然后分析这种聚类的原因
任务
水果识别
监督学习
学习历史数据,根据特征预测水果类别
数据集描述
- 59个样本
- 每个样本有4个特征:水果质量,宽度,高度,颜色
- 4个类别
每列一个特征,每一行一个样本,最后一列类别
思路
语言:python
安装机器学习工具库:pip install scikit-learn
-
划分数据集:
train_test_split()需要划分训练集和测试集
-
使用算法“近朱者赤”:
euclidean(欧氏距离)计算空间中两个点的距离
代码实现
import pandas as pd
from sklearn.model_selection import train_test_split
from scipy.spatial.distance import euclidean
import numpy as np
import ai_utils
DATA_FILE = './data_ai_practice/fruit_data.csv'
FRUIT_NAME = ['apple','mandarin','orange','lemon']
FEAT_COLS = ['mass','width','height','color_score']
def get_pred_label(test_sample_feat,train_data):
"""
“近朱者赤” 找最近距离的训练样本,取其标签作为预测样本的标签
"""
dis_lis =[]
for idx,row in train_data.iterrows():
#训练样本特征
train_sample_feat = row[FEAT_COLS].values
#计算距离
dis = euclidean(test_sample_feat,train_sample_feat)
dis_lis.append(dis)
#最小距离对应的位置
pos = np.argmin(dis_lis)
pred_label = train_data.iloc[pos]['fruit_name']
return pred_label
def main():
"""
主函数
"""
#读取数据集
fruit_data = pd.read_csv(DATA_FILE)
#划分数据集
train_data,test_data=train_test_split(fruit_data,test_size=1/5,random_state=10)
#预测对的个数
acc_count = 0
#分类器
for idx,row in test_data.iterrows():
#测试样本特征
test_sample_feat = row[FEAT_COLS].values
#预测值
pred_label = get_pred_label(test_sample_feat,train_data)
#真实值
true_label = row['fruit_name']
print('样本{}的真实标签{},预测标签{}'.format(idx,true_label,pred_label))
if true_label == pred_label:
acc_count += 1
#准确率
accuracy = acc_count/test_data.shape[0]
print('预测准确率{:.2f}%'.format(accuracy*100))
if __name__ == '__main__':
main()
708



被折叠的 条评论
为什么被折叠?



