第二讲:环境搭建与工具链
说实话,很多人在机器学习项目上栽跟头,不是算法不行,而是环境没配好。我见过太多人花了两小时调代码,最后发现是Python版本不对。所以这一讲,咱们先把地基打牢。
2.1 Python环境配置
我个人习惯用Anaconda来管理Python环境。为什么?因为它自带了一堆数据科学常用的包,省心。
核心要点:千万别用系统自带的Python,也别一股脑装最新版。我建议用Python 3.8或3.9,这两个版本对大多数库兼容性最好。
安装步骤其实很简单:
- 去Anaconda官网下载对应系统的安装包
- 一路默认安装,但记得勾选「Add Anaconda to my PATH environment variable」
- 打开终端或命令提示符,输入
python --version验证
注意:我曾经在Windows上踩过坑——安装路径里带了中文或空格,结果某些库死活装不上。所以路径最好全英文。
2.2 Jupyter Notebook:交互式开发的利器
Jupyter Notebook这东西,说白了就是一个能写代码、能记笔记、能画图的「活文档」。我在做加密货币分析时,经常用它来快速验证想法。
安装很简单,在终端里敲一行命令:
pip install jupyter notebook
启动就更简单了:
jupyter notebook
浏览器会自动打开一个页面。你想想看,左边是代码,右边是运行结果,中间还能写注释,是不是比纯脚本舒服多了?
小技巧:我习惯在Notebook里用%matplotlib inline这个魔法命令,这样图表会直接显示在单元格下方,不用弹窗。
2.3 Pandas:数据处理的核心
做加密货币预测,数据清洗是重头戏。Pandas就是干这个的。它处理表格数据的能力,说白了就是Excel的超级加强版。
安装命令:
pip install pandas
我举个例子,假设你从交易所拿到了比特币的历史价格数据:
import pandas as pd
# 读取CSV文件
df = pd.read_csv('btc_price.csv')
# 看看前5行
print(df.head())
# 检查缺失值
print(df.isnull().sum())
嗯,这里要注意:加密货币数据经常有空值,尤其是某些交易所的API偶尔会抽风。我遇到过凌晨三点数据断档的情况,这时候用df.fillna(method='ffill')向前填充就很有用。
2.4 NumPy:科学计算的基础
NumPy是Pandas的底层支撑,也是Scikit-learn的依赖。它处理的是多维数组,说白了就是矩阵运算。
安装:
pip install numpy
为什么需要它?你想想看,加密货币的价格序列本质上就是一个一维数组。计算移动平均、标准差、收益率,这些操作NumPy都能高效完成。
import numpy as np
# 模拟100天的收益率
returns = np.random.randn(100) * 0.02
# 计算累计收益
cumulative = np.cumprod(1 + returns)
print(f"总收益率: {cumulative[-1] - 1:.2%}")
个人经验:我刚开始用NumPy时,总喜欢用Python原生的列表。后来发现处理10万条数据时,NumPy比列表快了将近100倍。所以,能用NumPy就别用列表。
2.5 Matplotlib:数据可视化
光看数字没感觉,画成图才直观。Matplotlib是Python最经典的绘图库。
安装:
pip install matplotlib
画个简单的K线图?其实不用那么复杂,先画个折线图看看趋势:
import matplotlib.pyplot as plt
# 假设df是包含日期和收盘价的DataFrame
plt.figure(figsize=(12, 6))
plt.plot(df['date'], df['close'], color='blue', linewidth=1)
plt.title('Bitcoin Price Trend')
plt.xlabel('Date')
plt.ylabel('Price (USD)')
plt.xticks(rotation=45)
plt.show()
避坑指南:我曾经在画图时发现中文显示成方框,后来加了plt.rcParams['font.sans-serif'] = ['SimHei']才解决。如果你也遇到这个问题,试试这个。
2.6 Scikit-learn:机器学习工具箱
终于到了主角。Scikit-learn是Python最成熟的机器学习库,分类、回归、聚类、降维,它全包了。
安装:
pip install scikit-learn
用它来预测价格?先别急,咱们先跑个简单的线性回归试试手:
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
# 准备特征和标签
X = df[['volume', 'high_low_ratio']] # 特征
y = df['close'] # 目标
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.2, random_state=42
)
# 训练模型
model = LinearRegression()
model.fit(X_train, y_train)
# 预测
predictions = model.predict(X_test)
重要提醒:用历史价格预测未来价格,本质上是在做时间序列预测。这里有个坑——不能随机划分训练集和测试集,必须按时间顺序划分。否则你会「看到未来」,模型效果虚高。我刚开始就犯过这个错,还高兴了半天,后来才发现是数据泄露。
2.7 一张图看懂工具链
下面这张图展示了我们这套工具链的协作关系:
从这张图可以看得很清楚:数据从交易所进来,经过Pandas和NumPy处理,喂给Scikit-learn建模,最后用Matplotlib展示结果。Jupyter Notebook贯穿始终,既是开发环境也是展示平台。
2.8 一键安装所有依赖
懒得一个个装?我帮你写了个一键安装脚本:
pip install pandas numpy matplotlib scikit-learn jupyter
就这一行命令,搞定所有。如果你用的是Anaconda,大部分包已经预装了,只需要补装Scikit-learn和Jupyter。
验证安装:打开Python交互环境,依次导入这几个库,没有报错就说明环境配好了。
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import sklearn
print("All good!")
好了,环境搭好了,工具链也齐了。下一讲咱们就开始真正接触数据——从交易所API拉取比特币的历史价格。不过在那之前,我建议你先跑一遍上面的代码,确保每个库都能正常导入。嗯,磨刀不误砍柴工嘛。