Day 13: AI自动化基础
学习目标
完成今天的学习后,你将能够:
- 理解机器学习基础概念
- 使用Python进行自然语言处理
- 实现图像识别
- 构建智能决策系统
技术原理
机器学习基础
- 监督学习:分类、回归
- 无监督学习:聚类、降维
- 强化学习:奖励驱动
常用库
- scikit-learn:传统机器学习
- TensorFlow/PyTorch:深度学习
- NLTK/spaCy:自然语言处理
- OpenCV:图像处理
案例:智能自动化系统
构建一个智能自动化系统,实现:
- 文本分类和情感分析
- 图像识别和分类
- 智能推荐
- 异常检测
应用场景
1. 智能客服
- 意图识别
- 自动回复
- 问题分类
2. 数据分析
- 模式识别
- 趋势预测
- 异常检测
3. 自动化测试
- 测试用例生成
- 缺陷预测
- 代码审查
代码案例
案例1:文本分类
python
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
文本分类器
功能:使用机器学习进行文本分类
"""
import numpy as np
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.naive_bayes import MultinomialNB
from sklearn.model_selection import train_test_split
from sklearn.metrics import classification_report
class TextClassifier:
"""文本分类器"""
def __init__(self):
self.vectorizer = TfidfVectorizer(max_features=5000)
self.model = MultinomialNB()
self.is_trained = False
def train(self, texts, labels):
"""训练模型"""
# 转换文本为特征向量
X = self.vectorizer.fit_transform(texts)
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(
X, labels, test_size=0.2, random_state=42
)
# 训练模型
self.model.fit(X_train, y_train)
self.is_trained = True
# 评估模型
y_pred = self.model.predict(X_test)
print("模型评估报告:")
print(classification_report(y_test, y_pred))
def predict(self, text):
"""预测文本类别"""
if not self.is_trained:
raise RuntimeError("模型未训练")
# 转换文本
X = self.vectorizer.transform([text])
# 预测
prediction = self.model.predict(X)[0]
probabilities = self.model.predict_proba(X)[0]
return {
'prediction': prediction,
'probabilities': dict(zip(self.model.classes_, probabilities))
}
def main():
"""主函数"""
# 示例数据
texts = [
"这个产品质量很好,非常满意",
"服务态度差,再也不来了",
"价格合理,性价比高",
"物流太慢了,等了很久",
"包装精美,商品完好",
"客服态度很好,解答详细",
"商品有质量问题,要求退款",
"物超所值,推荐购买",
]
labels = [
"正面", "负面", "正面", "负面",
"正面", "正面", "负面", "正面"
]
# 创建分类器
classifier = TextClassifier()
# 训练模型
print("训练模型...")
classifier.train(texts, labels)
# 测试预测
test_texts = [
"这个产品不错,值得购买",
"质量太差了,很失望",
]
print("\n预测结果:")
for text in test_texts:
result = classifier.predict(text)
print(f"\n文本: {text}")
print(f"预测: {result['prediction']}")
print(f"概率: {result['probabilities']}")
if __name__ == "__main__":
main()案例2:异常检测
python
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
异常检测器
功能:使用机器学习检测数据异常
"""
import numpy as np
from sklearn.ensemble import IsolationForest
from sklearn.preprocessing import StandardScaler
class AnomalyDetector:
"""异常检测器"""
def __init__(self, contamination=0.1):
self.scaler = StandardScaler()
self.model = IsolationForest(
contamination=contamination,
random_state=42
)
self.is_trained = False
def train(self, data):
"""训练模型"""
# 数据标准化
scaled_data = self.scaler.fit_transform(data)
# 训练模型
self.model.fit(scaled_data)
self.is_trained = True
# 统计信息
predictions = self.model.predict(scaled_data)
n_anomalies = sum(1 for p in predictions if p == -1)
print(f"训练完成,发现 {n_anomalies} 个异常点")
def predict(self, data):
"""预测异常"""
if not self.is_trained:
raise RuntimeError("模型未训练")
# 数据标准化
scaled_data = self.scaler.transform(data)
# 预测
predictions = self.model.predict(scaled_data)
scores = self.model.decision_function(scaled_data)
return [
{
'is_anomaly': pred == -1,
'score': score
}
for pred, score in zip(predictions, scores)
]
def main():
"""主函数"""
# 生成示例数据
np.random.seed(42)
# 正常数据
normal_data = np.random.randn(100, 2) * 0.5 + [5, 5]
# 异常数据
anomaly_data = np.random.randn(10, 2) * 0.5 + [10, 10]
# 合并数据
data = np.vstack([normal_data, anomaly_data])
# 创建检测器
detector = AnomalyDetector(contamination=0.1)
# 训练模型
print("训练异常检测模型...")
detector.train(data)
# 测试预测
test_data = np.array([
[5, 5], # 正常
[10, 10], # 异常
[6, 6], # 正常
[15, 15], # 异常
])
print("\n预测结果:")
results = detector.predict(test_data)
for i, (point, result) in enumerate(zip(test_data, results)):
status = "异常" if result['is_anomaly'] else "正常"
print(f"点 {point}: {status} (分数: {result['score']:.3f})")
if __name__ == "__main__":
main()课后练习
练习1:文本处理
- 实现文本情感分析
- 构建关键词提取器
- 实现文本摘要
练习2:图像识别
- 使用OpenCV进行图像处理
- 实现简单的图像分类
- 构建图像特征提取器
练习3:智能推荐
- 实现协同过滤推荐
- 构建内容推荐系统
- 评估推荐效果
常见问题
Q1: 如何选择机器学习模型?
A: 根据问题类型、数据量、特征数量选择。
Q2: 如何提高模型准确率?
A: 增加数据量、特征工程、模型调参、集成学习。
Q3: 如何处理不平衡数据?
A: 使用过采样、欠采样、调整类别权重。
下一步学习
完成今天的学习后,建议你:
- 实践机器学习项目
- 了解深度学习基础
- 尝试AI自动化应用
- 准备进入Day 14的学习:网页自动化
明天我们将学习如何使用Selenium进行网页自动化。