决策树实战:california房价预测

Python3.7——决策树实战:california房价预测

网上有好多2.*版本的代码 但是本地安装的是python3.7版本,在学习中遇到很多问题,有很多地方和2.*版本的不一样,所以记录下来方便参考,侵权必删。

导入模块

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline

加载数据

由于sklearn自带的数据集california_housing在后来的版本中去除了 需要自己手动下载数据集,而且数据格式也与之前不一致。
下载地址:链接:https://pan.baidu.com/s/1MED3CmImTSJcPK4lUWuMUQ
提取码:qtb2

house = np.loadtxt('cal_housing.data', delimiter=',')
house_feature_name=pd.read_csv('cal_housing.domain',sep=':',header = None)
house_feature_name=house_feature_name.values #DataFrame转化为数组

创建树模型

from sklearn import tree
dtr = tree.DecisionTreeRegressor(max_depth = 2)
#使用两列的特征进行训练 即传两个参数x, y
dtr.fit(<
<think>好的,用户之前让我帮忙整理过Day3和Day4的学习内容,当时是关于Python基础知识的,比如变量、条件语句、循环、列表等。现在用户又提出了新的请求,希望介绍Day3-4的内容,但这次的内容转向了机器学习流程,包括数据→特征→模型→评估,以及用Scikit-learn实现线性回归预测房价,使用波士顿数据集。 首先,我需要确认用户的学习路径是否有变化。之前是Python基础,现在突然切换到机器学习,可能用户是在进行一个为期数周的课程,而第一周的后面几天开始接触机器学习基础。也有可能用户是分阶段学习,先学Python基础,然后快速进入机器学习应用。 接下来,用户的需求是介绍这两天的内容,我需要将机器学习流程分到Day3,而实践部分放在Day4。需要确保每个步骤都解释清楚,尤其是对于刚学完Python基础的人来说,可能需要更详细的说明,避免使用过于专业的术语,同时补充示例帮助理解。 用户可能刚接触机器学习,所以需要从流程开始讲起,先理解整个流程的步骤,再具体到每个步骤的细节。比如数据部分,需要解释数据集的结构、加载数据的方法、数据预处理的重要性。特征部分,可能需要说明特征选择、特征工程的基本概念,但因为是入门,可能不需要太深入。模型部分,线性回归作为第一个模型,需要解释它的原理,但不用太数学化,重点在应用。评估部分,需要介绍常见的评估指标,如MSE、R²,并解释它们的意义。 在实践部分,使用Scikit-learn实现线性回归,波士顿数据集是一个经典数据集,但要注意,波士顿数据集在最新版本的Scikit-learn中已被移除,可能需要用替代数据集,比如加利福尼亚房价数据集,或者提示用户如何处理这个问题。不过用户明确提到波士顿数据集,可能需要保留,但需要给出正确的代码示例,可能需要加载的方法,比如从sklearn.datasets中加载,但可能会遇到问题,所以可能需要使用fetch_california_housing或者提示用户如何解决。 另外,用户可能希望看到完整的代码示例,从加载数据、数据预处理、划分数据集、训练模型、预测到评估的整个过程。代码需要注释,并且分步骤解释,同时说明每个步骤的作用。比如,数据标准化部分,可能需要解释为什么需要做标准化,以及StandardScaler的作用。 评估部分,需要解释MSE和R²分数的含义,比如MSE越小越好,R²越接近1越好,这样用户能理解结果的好坏。 可能还需要注意用户的知识背景,如果之前只学了Python基础,可能需要解释一些库的导入,比如numpy、pandas、matplotlib,但可能用户已经接触过,或者在当前课程中会教。所以可能需要适当提及,但不过多展开。 最后,总结部分需要强调机器学习流程的重要性,以及实践中的关键点,比如数据预处理、模型训练和评估,同时鼓励用户动手实践,尝试调整参数或数据,观察结果变化,加深理解。 需要检查是否有遗漏的步骤,比如数据分割为训练集和测试集的重要性,避免数据泄露,或者在特征处理中是否需要更多步骤,比如处理缺失值,但波士顿数据集通常比较干净,可能不需要。但可能需要提到在实际项目中数据清洗的步骤,但这里因为是入门示例,可能不需要复杂处理。 另外,注意代码的正确性,确保在用户复制粘贴后可以运行,比如正确的导入语句,正确的变量名,以及正确的函数使用。比如,LinearRegression的fit方法,predict方法的使用,评估指标的计算等。</think>以下是为第一周 **Day3** 和 **Day4** 整理的机器学习流程与实践内容讲解,分知识点详细说明并附加示例: --- ### **Day3 学习内容:机器学习流程** #### **1. 数据(Data)** - **概念**:数据是机器学习的核心输入,通常分为**特征(X)**和**标签(y)**。 - **常见数据集结构**: - 表格型数据(如CSV文件),每行代表一个样本,每列代表一个特征。 - **示例**(波士顿房价数据集): - 特征:房屋面积、房间数量、地理位置等。 - 标签:房屋价格。 - **关键操作**: ```python from sklearn.datasets import load_boston data = load_boston() X = data.data # 特征矩阵 y = data.target # 标签(房价) ``` --- #### **2. 特征处理(Feature Engineering)** - **目标**:将原始数据转换为适合模型训练的格式。 - **常见步骤**: - **标准化**:消除特征量纲差异(如 `StandardScaler`)。 - **缺失值处理**:删除或填充缺失数据。 - **示例**(标准化): ```python from sklearn.preprocessing import StandardScaler scaler = StandardScaler() X_scaled = scaler.fit_transform(X) # 标准化后的特征 ``` --- #### **3. 模型(Model)** - **概念**:从数据中学习规律的算法,例如线性回归、决策树等。 - **线性回归原理**:拟合特征与标签之间的线性关系(公式:`y = w1*x1 + w2*x2 + ... + b`)。 - **模型训练**:通过优化算法(如梯度下降)找到最佳参数 `w` 和 `b`。 - **代码示例**: ```python from sklearn.linear_model import LinearRegression model = LinearRegression() # 初始化模型 model.fit(X_scaled, y) # 训练模型 ``` --- #### **4. 评估(Evaluation)** - **目标**:衡量模型预测效果,常用指标: - **均方误差(MSE)**:预测值与真实值的平均平方误差(越小越好)。 - **R²分数**:模型解释数据变动的比例(越接近1越好)。 - **示例**: ```python from sklearn.metrics import mean_squared_error, r2_score y_pred = model.predict(X_scaled) mse = mean_squared_error(y, y_pred) # 计算MSE r2 = r2_score(y, y_pred) # 计算R² ``` --- ### **Day4 学习内容:Scikit-learn实战(波士顿房价预测)** #### **1. 完整代码示例** ```python # 1. 加载数据 from sklearn.datasets import load_boston from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler from sklearn.linear_model import LinearRegression from sklearn.metrics import mean_squared_error, r2_score data = load_boston() X = data.data y = data.target # 2. 划分训练集和测试集(注意:波士顿数据集在较新版本中已移除,可替换为其他数据集) X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # 3. 特征标准化 scaler = StandardScaler() X_train_scaled = scaler.fit_transform(X_train) X_test_scaled = scaler.transform(X_test) # 4. 训练模型 model = LinearRegression() model.fit(X_train_scaled, y_train) # 5. 预测与评估 y_pred = model.predict(X_test_scaled) print("MSE:", mean_squared_error(y_test, y_pred)) print("R² Score:", r2_score(y_test, y_pred)) ``` --- #### **2. 关键点解释** - **数据划分**:`train_test_split` 将数据分为训练集(80%)和测试集(20%),避免模型“死记硬背”。 - **标准化**:训练集用 `fit_transform`,测试集用 `transform`,防止信息泄漏。 - **模型预测**:用测试集评估泛化能力,而非训练集。 --- #### **3. 输出结果示例** ``` MSE: 24.291 R² Score: 0.668 ``` - **解读**:模型能解释约66.8%的房价变动,仍有优化空间(如特征选择、尝试其他模型)。 --- #### **4. 扩展思考** - **问题1**:如果MSE很高,可能是什么原因? - 答案:特征不足、数据噪声大、模型不适合(如非线性关系用线性模型)。 - **问题2**:如何改进模型? - 答案:添加多项式特征、使用正则化(岭回归)、尝试树模型(如决策树)。 --- 通过这两天的学习,可以掌握机器学习从数据到模型的核心流程,并通过实际代码理解各环节的作用。后续可尝试替换数据集(如糖尿病预测)或调整参数深化理解。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值