面向初学者的 10 条实用机器学习技巧
itomcoil 2024-12-28 13:35 18 浏览
这 10 条建议让你省去很多麻烦。它们专注于实践,而不仅仅是理论。为了使其实用,我将向您展示如何使用UCI 机器学习存储库中的真实数据集来构建和训练您的第一个模型。
让我们开始吧。
1.从简单开始:先建立小模型
暂时忘掉深度学习吧。从小型、简单的模型开始至关重要。如果你不能解释线性回归或决策树,你就还没准备好学习神经网络。这些简单的模型对于小型数据集非常有效,并为理解基础知识奠定了坚实的基础。
示例:使用线性回归预测房价
我们正在使用波士顿住房数据集。目标是根据犯罪率、房间数量和税率等特征预测房价。
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
# Load dataset
url = "https://archive.ics.uci.edu/ml/machine-learning-databases/housing/housing.data"
columns = ["CRIM", "ZN", "INDUS", "CHAS", "NOX", "RM", "AGE", "DIS", "RAD", "TAX", "PTRATIO", "B", "LSTAT", "MEDV"]
data = pd.read_csv(url, sep='\s+', names=columns)
# Split data
X = data.drop(columns=["MEDV"])
y = data["MEDV"]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Train Linear Regression
model = LinearRegression()
model.fit(X_train, y_train)
# Evaluate
y_pred = model.predict(X_test)
print(f"Mean Squared Error: {mean_squared_error(y_test, y_pred):.2f}")
这里发生了什么?
- 我们加载住房数据集(无多余内容)。
- 将其分成训练数据集和测试数据集(80/20)。
- 训练线性回归模型来预测价格。
- 使用均方误差(MSE)进行评估。
结果如何? 你可以在 5 分钟内解释这个基本模型。
2. 在训练模型之前了解你的数据
原始数据中充满了故事。不要跳过探索数据集、可视化关系和识别可能破坏模型性能的奇怪异常值的步骤。
示例:探索葡萄酒数据集中的关系
我们使用的是葡萄酒数据集。该数据集根据 13 个特征将葡萄酒分为三类。
import seaborn as sns
import matplotlib.pyplot as plt
# Load the Wine Dataset
url = "https://archive.ics.uci.edu/ml/machine-learning-databases/wine/wine.data"
columns = ["Class"] + [f"Feature_{i}" for i in range(1, 14)]
data = pd.read_csv(url, header=None, names=columns)
# Visualize relationships
sns.pairplot(data, hue="Class", diag_kind="kde")
plt.show()
这里发生了什么?
- 该数据集有 3 个葡萄酒类别和 13 个数值特征。
- 配对图可视化了特征之间的关系。
- 您很快就会看到哪些特点区分了葡萄酒类别(一些模式会脱颖而出)。
关键见解:机器学习首先是理解数据,而不是模型。
3.清理和预处理数据
请记住,脏数据等于坏模型。你的算法不是读心者。缺失值、非数字数据和不一致的比例都会对你的结果产生负面影响。因此,在训练模型之前,请清理和预处理你的数据。
示例:清理乳腺癌数据集
乳腺癌数据集包含一些以?表示的无效条目。
import numpy as np
# Load the dataset
url = "https://archive.ics.uci.edu/ml/machine-learning-databases/breast-cancer-wisconsin/breast-cancer-wisconsin.data"
data = pd.read_csv(url, header=None)
# Replace '?' with NaN
data.replace("?", np.nan, inplace=True)
# Drop rows with missing values
data = data.dropna()
print(data.head())
这里发生了什么?
- 用 NaN 替换无效条目(?)。
- 删除缺少值的行。
- 清理后的数据已准备好进行模型训练。
教训:垃圾进,垃圾出。清理你的数据。
4. 在做其他事情之前先拆分数据
如果你用训练模型时所用的数据来评估模型,那你就是在自欺欺人!将数据分成训练数据集和测试数据集。
示例:训练-测试拆分
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
print(f"Train size: {X_train.shape}, Test size: {X_test.shape}")
为什么重要:在未知数据上测试模型可以模拟真实世界的性能。
5. 训练之前扩展数据
机器学习模型不知道“年龄”和“收入”的衡量标准不同。缩放特征,使所有值都具有同等重要性。
示例:标准化特征
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)
6. 交叉验证:以正确的方式测试你的模型
单一的训练测试分割是不够的。使用交叉验证在多个数据上测试您的模型。我们将在这里使用不同的数据集。这是来自 UCI ML 的钞票认证数据集。您会注意到交叉验证准确率与准确率有何不同。更低!使用较低的一个。如果您的准确率给您更高的百分比,并且您使用它,那么您就错了!
示例:使用随机森林进行交叉验证
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import cross_val_score
model = RandomForestClassifier()
scores = cross_val_score(model, X, y, cv=5)
print(f"Cross-Validation Accuracy: {scores.mean():.2f}")
7. 选择正确的功能
并非所有特征都重要。使用特征选择技术来挑选最重要的特征。
from sklearn.feature_selection import SelectKBest, f_classif
X_new = SelectKBest(f_classif, k=3).fit_transform(X, y)
print(f"Selected Features Shape: {X_new.shape}")
8. 正则化以避免过度拟合
当你的模型在训练数据上表现良好但在未知数据上表现不佳时,就会发生过度拟合。正则化有助于解决这个问题。
示例:Ridge Regression
from sklearn.linear_model import Ridge
ridge = Ridge(alpha=1.0)
ridge.fit(X_train_scaled, y_train)
print(f"Model Coefficients: {ridge.coef_}")
9.调整超参数
模型具有需要调整的设置(超参数)以获得更好的结果。使用网格搜索找到最佳设置。
from sklearn.model_selection import GridSearchCV
from sklearn.svm import SVC
params = {'kernel': ['linear', 'rbf'], 'C': [0.1, 1, 10]}
grid = GridSearchCV(SVC(), params, cv=5)
grid.fit(X_train_scaled, y_train)
print(f"Best Parameters: {grid.best_params_}")
10.用正确的指标评估你的模型
准确度还不够。查看准确率、召回率和 F1 分数等指标来衡量模型的性能。
from sklearn.metrics import classification_report
y_pred = model.predict(X_test_scaled)
print("Classification Report:")
print(classification_report(y_test, y_pred))
相关推荐
- PS小技巧 调整命令,让人物肤色变得更加白皙 #后期修图
-
我们来看一下如何去将人物的皮肤变得更加的白皙。·首先选中图层,Ctrl键加J键复制一层。·打开这里的属性面板,选择快速操作删除背景,这样就会将人物进行单独的抠取。·接下来在上方去添加一个黑白调整图层,...
- 把人物肤色提亮的方法和技巧
-
PS后期调白肤色提亮照片的方法。一白遮百丑,所以对于Photoshop后期来说把人物肤色调白是一项非常重要的任务。就拿这张素材图片来说,这张素材图片人脸的肤色主要偏红、偏黄,也不够白皙,该怎样对它进行...
- 《Photoshop教程》把美女图片调成清爽色彩及润肤技巧
-
关注PS精品教程,每天不断更新~~室内人物图片一般会偏暗,人物脸部、肤色及背景会出现一些杂点。处理之前需要认真的给人物磨皮及美白,然后再整体润色。最终效果原图一、用修补工具及图章工具简单去除大一点的黑...
- PS后期对皮肤进行美白的技巧
-
PS后期进行皮肤美白的技巧。PS后期对皮肤进行美白的技巧:·打开素材图片之后直接复制原图。·接下来直接点击上方的图像,选择应用图像命令。·在通道这里直接选择红通道,混合这里直接选择柔光,然后点击确定。...
- 493 [PS调色]调模特通透肤色
-
效果对比:效果图吧:1、光位图:2、拍摄参数:·快门:160;光圈:8;ISO:1003、步骤分解图:用曲线调整图层调出基本色调。用可选颜色调整图层调整红色、黄色、白色和灰色4种颜色的混合比例。用色彩...
- 先选肤色再涂面部,卡戴珊的摄影师透露:为明星拍完照后怎么修图
-
据英国媒体12月17日报道,真人秀明星金·卡戴珊终于承认,她把女儿小北P进了家族的圣诞贺卡,怪不得粉丝们都表示这张贺卡照得非常失败。上周,这位39岁的女星遭到了一些粉丝针对这张照片的批评,她于当地时间...
- 如何在PS中运用曲线复制另一张照片的色调
-
怎样把另一张作品的外观感觉,套用到自己的照片上?单靠肉眼来猜,可能很不容易,而来自BenSecret的教学,关键是在PS使用了两个工具,让你可以准确比较两张照片的曝光、色调与饱和度,方便你调整及复制...
- PS在LAB模式下调出水嫩肤色的美女
-
本PS教程主要使用Photoshop使用LAB模式调出水嫩肤色的美女,教程调色比较独特。作者比较注重图片高光部分的颜色,增加质感及肤色调红润等都是在高光区域完成。尤其在Lab模式下,用高光选区调色后图...
- 在Photoshop图像后期处理中如何将人物皮肤处理得白皙通透
-
我们在人像后期处理中,需要将人物皮肤处理的白皙通透,处理方法很多,大多数都喜欢使用曲线、磨皮等进行调整,可以达到亮但是不透,最终效果往往不是很好,今天就教大家一种如何将任务皮肤处理得白皙通透,希望能帮...
- PS调色自学教程:宝宝照片快速调通透,简单实用!
-
PS调色自学教程:宝宝照片快速调通透。·首先复制图层,然后选择进入ACR滤镜,选择曲线锁定照片的亮部,也就高光位置,其他部位补亮一点,尤其是阴影的部位补亮多一些,让画面的层次均匀一点。·然后回到基本项...
- 【干货】如何利用PS进行人物美化
-
人物图像美化在Photoshop中非常常用,Photoshop作为一款功能强大的图像处理软件,不仅可以对人像进行基本的调色、美化和修复等处理,还可以改变人物的线条和幅度,如调整脸部器官和脸型的大小、调...
- 教大家一种可以快速把肤色处理均匀的方法@抖音短视频
-
快速把肤色处理均匀的方法。今天教大家一种可以快速把肤色处理均匀的方法。像这张照片整体肤色走紫红色,但是局部偏黄缘处理起来非常的麻烦。其实我们只需要新建空白图层,图层混合模式更改为颜色,再选择画笔工具把...
- PS调色教程 利用RAW调出干净通透的肤色
-
要么不发,要么干货。后期教程来噜~用RAW调出干净通透的肤色。这次终于不会原片比PS后好看了吧。如果你依然这么觉得,请不要残忍的告诉我这个事实,泪谢TAT)附送拍摄花絮,感谢各位的支持更多风格请关注m...
- photoshop后期皮肤变白的技巧
-
PS后期皮肤变白的技巧。1.PS后期让皮肤变白的方法有很多种,接下来教你一种非常简单容易上手的方法。2.打开素材图片之后,直接在小太极下拉框的位置添加一个纯色调整图层,颜色设置一个纯白色,点击...
- Photoshop调出人物的淡雅粉嫩肤色教程
-
本教程主要使用Photoshop调出人物的淡雅粉嫩肤色教程,最终的效果非常的通透迷人,下面让我们一起来学习.出自:86ps效果图:原图:1、打开原图复制一层。2、用Topaz滤镜磨皮(点此下载)。3、...
- 一周热门
- 最近发表
- 标签列表
-
- ps像素和厘米换算 (32)
- ps图案在哪里 (33)
- super().__init__ (33)
- python 获取日期 (34)
- 0xa (36)
- super().__init__()详解 (33)
- python安装包在哪里找 (33)
- linux查看python版本信息 (35)
- python怎么改成中文 (35)
- php文件怎么在浏览器运行 (33)
- eval在python中的意思 (33)
- python安装opencv库 (35)
- python div (34)
- sticky css (33)
- python中random.randint()函数 (34)
- python去掉字符串中的指定字符 (33)
- python入门经典100题 (34)
- anaconda安装路径 (34)
- yield和return的区别 (33)
- 1到10的阶乘之和是多少 (35)
- python安装sklearn库 (33)
- dom和bom区别 (33)
- js 替换指定位置的字符 (33)
- python判断元素是否存在 (33)
- sorted key (33)