【建议收藏】数据挖掘基础、人工智能必会内容

该教程涵盖了数据挖掘基础、机器学习、量化交易和深度学习四大主题,从Day01到Day16详细讲解相关知识点,包括数据预处理、特征选择、模型训练与调优、过拟合处理、KNN与k-means的区别、深度学习模型实现等,旨在帮助学习者掌握人工智能领域的核心技能。
摘要由CSDN通过智能技术生成

目录

1. 数据挖掘基础

Day01

Day02 

Day03

Day04

Day05 

Day06

2. 机器学习

Day07

Day08

Day09

3. 量化交易

Day10

Day11

Day12

Day13

4. 深度学习

Day14

Day15

Day16


1. 数据挖掘基础

Day01

  1. 代码题

绘制北京、上海两地11点到12点每分钟的温度变化状况。 

答:

# 画出温度变化图
import random

# 准备x, y坐标的数据
x = range(60)
y_shanghai = [random.uniform(15, 18) for i in x]
# 增加北京的温度数据
y_beijing = [random.uniform(1, 3) for i in x]

# 1)创建画布
plt.figure(figsize=(20, 8), dpi=80)

# 2)绘制折线图
# plt.plot(x, y_shanghai)
plt.plot(x, y_shanghai, label="上海")
# 使用多次plot可以画多个折线
plt.plot(x, y_beijing, color='r', linestyle='--', label="北京")

# 显示图例
plt.legend(loc="best")

# 增加以下两行代码
# 构造x轴刻度标签
x_ticks_label = ["11点{}分".format(i) for i in x]
# 构造y轴刻度
y_ticks = range(40)

# 修改x,y轴坐标的刻度显示
plt.xticks(x[::5], x_ticks_label[::5])
plt.yticks(y_ticks[::5])

# 添加网格显示
plt.grid(True, linestyle='--', alpha=0.5)

# 添加x轴、y轴描述信息及标题
plt.xlabel("时间")
plt.ylabel("温度")
plt.title("中午11点0分到12点之间的温度变化图示")

# 3)显示图像
plt.show()

Day02 

  1. 简答题

下面两个ndarray是否能够进行运算?

arr1 = np.array([[1, 2, 3, 2, 1, 4], [5, 6, 1, 2, 3, 1]])

arr2 = np.array([[1], [3]])

答:

可以,因为符合广播机制。

Day03

  1. 简答题

用Pandas筛选符合条件的数据的方法有哪些? 

答:

data[(data['p_change'] > 2) & (data['open'] > 15)]

data.query("p_change > 2 & turnover > 15")

Day04

  1. 简答题

请简述Pandas处理缺失值的思路。

答:如何处理np.nan

        1)判断数据中是否存在NaN缺失值

            pd.isnull(df)

            pd.notnull(df)

        2)        两种方法:

                    1、删除含有缺失值的样本

                        df.dropna(axis=0, inplace=False)

                    2、替换/插补

                        sr.fillna(value, inplace=False)

    如何处理其他默认标记的缺失值

        1)将默认标记转换成np.nan

        2)处理np.nan缺失值的思路

Day05 

  1. 代码题

根据给定日线数据绘制日K线图。

答:

import pandas as pd
from mpl_finance import candlestick_ochl
import matplotlib.pyplot as plt
from matplotlib.pylab import date2num

# 数据读取
stock_day = pd.read_csv("./stock_day/stock_day.csv")

# 按时间顺序排列数据
stock_day = stock_day.sort_index()

# 准备ax
fig, axes = plt.subplots(nrows=1, ncols=1, figsize=(13, 8), dpi=100)

# 准备quotes
# 处理time字段
# 将时间索引类型转换成Pandas默认的类型
stock_day.index = pd.to_datetime(stock_day.index)
# 将时间转换成日K线绘制要求的浮点型
stock_day['time'] = date2num(stock_day.index)
# 索引sequence
day_k = stock_day[['time', 'open', 'close', 'high', 'low']]

# 绘制k线图
candlestick_ochl(axes, day_k.values[:30], width=0.4, colorup='r', colordown='g')

# x刻度设置为日期
axes.xaxis_date()

# 添加网格
plt.grid(linestyle="--", alpha=0.5)

# 显示图像
plt.show()

Day06

  1. 简答题

简述双均线策略。

答:

预设两条均线一条长均线、一条短均线。比如一个ma=5,一个ma=60, 5的均线被称作快线,60的均线被称作慢线。

买入策略中当快线上穿慢线(ma5上穿ma60)称为形成金叉买点信号,买入股票。

卖出策略中当快线下穿慢线(ma5下穿ma60)称为形成死叉卖点信号,卖出股票。

 

2. 器学习

Day07

(1)机器学习概述

什么是深度学习,它与机器学习算法之间有什么联系?

深度学习是机器学习的一个子领域,它关心的是参照神经学科的理论构建神经网络,使用反向传播对大量未标注或半结构化的数据进行建模。从这个角度看,深度学习可以看成一种非监督学习算法,通过使用神经网络学习数据的表示。

监督学习和非监督学习有什么不同?

监督学习需要具有标签(label)的训练数据,比如做分类,你需要先对训练数据做标记,然后才能训练模型将数据分成你说需要的标记类。 
而非监督学习则不需要。

什么时候你应该使用分类而不是回归?

分类会产生离散的数值,使得数据严格的分为不同类。回归会得到连续的值,使你更好的区分独立点之间的区别。当你需要知道你的数据明确的属于那些类时你可以用分类。

请简要说说一个完整机器学习项目的流程。

1 抽象成数学问题
明确问题是进行机器学习的第一步。指的我们明确我们可以获得什么样的数据,目标是一个分类还是回归或者是聚类的问题,如果都不是的话,如果划归为其中的某类问题。

2 获取数据
数据决定了机器学习结果的上限,而算法只是尽可能逼近这个上限。数据要有代表性,否则必然会过拟合。
而且对于分类问题,数据偏斜不能过于严重,不同类别的数据数量不要有数个数量级的差距。
而且还要对数据的量级有一个评估,多少个样本,多少个特征,可以估算出其对内存的消耗程度,判断训练过程中内存是否能够放得下。如果放不下就得考虑改进算法或者使用一些降维的技巧了。如果数据量实在太大,那就要考虑分布式了。

3 特征预处理与特征选择
特征预处理、数据清洗是很关键的步骤,往往能够使得算法的效果和性能得到显著提高。归一化、离散化、因子化、缺失值处理、去除共线性等,数据挖掘过程中很多时间就花在它们上面。这些工作简单可复制,收益稳定可预期,是机器学习的基础必备步骤。
筛选出显著特征、摒弃非显著特征,需要机器学习工程师反复理解业务。这对很多结果有决定性的影响。特征选择好了,非常简单的算法也能得出良好、稳定的结果。这需要运用特征有效性分析的相关技术,如相关系数、卡方检验、平均互信息、条件熵、后验概率、逻辑回归权重等方法。

4 训练模型与调优
直到这一步才用到我们上面说的算法进行训练。现在很多算法都能够封装成黑盒供人使用。但是真正考验水平的是调整这些算法的(超)参数,使得结果变得更加优良。这需要我们对算法的原理有深入的理解。理解越深入,就越能发现问题的症结,提出良好的调优方案。

5 模型诊断
过拟合、欠拟合 判断是模型诊断中至关重要的一步。常见的方法如交叉验证,绘制学习曲线等。过拟合的基本调优思路是增加数据量,降低模型复杂度。欠拟合的基本调优思路是提高特征数量和质量,增加模型复杂度。
误差分析 也是机器学习至关重要的步骤。通过观察误差样本,全面分析误差产生误差的原因:是参数的问题还是算法选择的问题,是特征的问题还是数据本身的问题……
诊断后的模型需要进行调优,调优后的新模型需要重新进行诊断,这是一个反复迭代不断逼近的过程,需要不断地尝试, 进而达到最优状态。

6 模型融合
一般来说,模型融合后都能使得效果有一定提升。而且效果很好。
工程上,主要提升算法准确度的方法是分别在模型的前端(特征清洗和预处理,不同的采样模式)与后端(模型融合)上下功夫。因为他们比较标准可复制,效果比较稳定。而直接调参的工作不会很多,毕竟大量数据训练起来太慢了,而且效果难以保证。

7 上线运行

这一部分内容主要跟工程实现的相关性比较大。工程上是结果导向,模型在线上运行的效果直接决定模型的成败。 不单纯包括其准确程度、误差等情况,还包括其运行的速度(时间复杂度)、资源消耗程度(空间复杂度)、稳定性是否可接受。

 

特征工程

TF-IDF是什么?

TF指Term frequecy,代表词频,IDF代表inverse document frequency

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值