Menu
CoddyTech

相关矩阵

本课属于 Coddy Machine Learning 学习旅程的“机器学习统计学”单元。第 31 课,共 64 课。

选择特征意味着要同时将每一列与目标进行比较。df.corr(numeric_only=True)会生成相关矩阵,并跳过文本列:

laptops = pd.DataFrame({
    "model": ["Arc", "Bolt", "Cove", "Dune", "Echo", "Flux", "Gale"],
    "ram_gb": [8, 16, 8, 32, 16, 16, 32],
    "weight_kg": [2.3, 1.4, 2.0, 1.1, 1.8, 1.2, 1.6],
    "battery_h": [7, 9, 10, 13, 6, 11, 8],
    "price": [650, 1100, 700, 1600, 900, 1350, 1200],
})
corr = laptops.corr(numeric_only=True)

四列笔记本电脑数据的相关矩阵,以数字网格形式显示。对角线上的值为灰色的 1.00;price 列已突出显示:ram_gb 为 0.81,weight_kg 为 -0.95,battery_h 为 0.70

每个单元格表示其所在行和列的 r。要找出最强的特征,请按大小对价格列进行排序,并忽略正负号:

ranked = np.abs(corr["price"]).sort_values(ascending=False)
print(ranked.index[1])

这会输出:

weight_kg

索引 0 对应的就是 price 本身,值为 1。笔记本电脑越轻,价格越高:-0.95 是最强的关联。

challenge icon

挑战

中等

一家能源公司在冬季调查了 24 户家庭。homes.csv 中包含一个 home 编号列,以及数值列 area_m2、insulation_cm、residents、outside_temp_c 和 heating_kwh。程序会读取一个目标列。

  1. 输出相关矩阵中目标列的内容,并四舍五入到小数点后 2 位。
  2. 按照下方示例,输出 Strongest:、与目标列关系最密切的其他列,以及它的 r 值。

对于另一项调查,目标列为 heating_kwh:

windows        0.72
floors         0.68
age_years      0.23
heating_kwh    1.00
Name: heating_kwh, dtype: float64
Strongest: windows (r = 0.72)

亲手试试

import numpy as np
import pandas as pd

homes = pd.read_csv("homes.csv")
target = input()

# 在下方编写你的代码
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

机器学习统计学中的所有课

自己练习: Python 在线编译器