了解探索性数据分析(EDA)
机器学习的基础概念
手工实现一个简单的分类器
人工智能 vs 机器学习 vs 深度学习
屏幕快照 2019-05-14 下午7.02.31.png深度学习(cnn rnn 细分算法)
屏幕快照 2019-05-14 下午7.05.18.png 屏幕快照 2019-05-14 下午7.06.01.png屏幕快照 2019-05-14 下午7.09.44.png
屏幕快照 2019-05-14 下午7.14.23.png 屏幕快照 2019-05-14 下午7.15.48.png
欧式距离
# -*- coding: utf-8 -*-
"""
任务:鸢尾花识别
"""
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/Iris.csv'
SPECIES = ['Iris-setosa', # 山鸢尾
'Iris-versicolor', # 变色鸢尾
'Iris-virginica' # 维吉尼亚鸢尾
]
# 使用的特征列
FEAT_COLS = ['SepalLengthCm', 'SepalWidthCm', 'PetalLengthCm', 'PetalWidthCm']
def get_pred_label(test_sample_feat, train_data):
"""
“近朱者赤” 找最近距离的训练样本,取其标签作为预测样本的标签
"""
dis_list = []
for idx, row in train_data.iterrows():
# 训练样本特征
train_sample_feat = row[FEAT_COLS].values
# 计算距离
dis = euclidean(test_sample_feat, train_sample_feat)
dis_list.append(dis)
# 最小距离对应的位置
pos = np.argmin(dis_list)
pred_label = train_data.iloc[pos]['Species']
return pred_label
def main():
"""
主函数
"""
# 读取数据集
iris_data = pd.read_csv(DATA_FILE, index_col='Id')
# EDA
ai_utils.do_eda_plot_for_iris(iris_data)
# 划分数据集
train_data, test_data = train_test_split(iris_data, test_size=1/3, 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['Species']
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()
网友评论