简单实例实现深度学习(1/3)线性模型


Lesson-01-代码复现与参考答案

# 导入包
# 用于加载波士顿房价数据集
from sklearn.datasets import load_boston 
# pandas工具包 对于pandas陌生的同学可以参考官方10分钟上手教程:https://pandas.pydata.org/pandas-docs/stable/10min.html
import pandas as pd 
# seaborn 用于画图
import seaborn as sns
import numpy as np # numpy
# 显示画图
%matplotlib inline


data = load_boston() # 加载数据集
data.keys() # data的里面的字段

dict_keys([‘data’, ‘target’, ‘feature_names’, ‘DESCR’, ‘filename’])

dataframe = pd.DataFrame(data['data'])
dataframe.head(5) # 查看dataframe的前5行,我们可以看到列名是数字

在这里插入图片描述

dataframe.columns = data['feature_names'] # 将数字列名替换为特征的名字
dataframe.head(5)

dataframe['price'] = data['target'] # target为房价,也是我们的目标值,我们将目标值赋值给dataframe
dataframe.head(2)
sns.heatmap(dataframe.corr(), annot=True, fmt='.1f') # 查看特征与price的相关性系数,正相关和负相关

在这里插入图片描述

import matplotlib.pyplot as plt
plt.scatter(dataframe['RM'], dataframe['price'])

在这里插入图片描述

# 查看部分特征与price的数据分布展示 
plt.figure(figsize=(20, 5))

features = ['LSTAT', 'RM']
target = dataframe['price']

for i, col in enumerate(features):
    plt.subplot(1, len(features) , i+1)
    x = dataframe[col]
    y = target
    plt.scatter(x, y, marker='o')
    plt.title('{} vs price'.format(col))
    plt.xlabel(col)
    plt.ylabel('price')

在这里插入图片描述
np.subplot用来 使得图一行放两个


x = dataframe['RM'] 

y = dataframe['price']
history_notes = {_x : _y for _x, _y in zip(x, y)}

用历史数据来预测未曾见到的过的数据,最直接的方法

K-Neighbor-Nearst

def knn(query_x, history, top_n=3):
    sorted_notes = sorted(history.items(), key=lambda x_y: (x_y[0] - query_x) ** 2) 
    similar_notes = sorted_notes[:top_n]
    similar_ys = [y for _, y in similar_notes]
    
    return np.mean(similar_ys)

knn(5.4, history_notes)

15.700000000000001

为了更快的获得结果,我们希望通过拟合函数来获得预测能力 f ( r m ) = k ∗ r m + b f(rm) = k * rm + b f(rm)=krm+b

Random Approach

L o s s ( k , b ) = 1 n ∑ i ∈ N ( y i ^ − y i ) 2 Loss(k, b) = \frac{1}{n} \sum_{i \in N} (\hat{y_i} - y_i) ^ 2 Loss(k,b)=n1iN(yi^yi)2
L o s s ( k , b ) = 1 n ∑ i ∈ N ( ( k ∗ r m i + b ) − y i ) 2 Loss(k, b) = \frac{1}{n} \sum_{i \in N} ((k * rm_i + b) - y_i) ^ 2 Loss(k,b)=n1

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值