1013列表推导式,加上楼层的房价预测

# list1 = [1,2,3,4,5,6]
# list2 = []
# for i in list1:
#     list2.append(i+1)
# print(list2)
上面是正常操作
# list3 = [i+1 for i in list1]
# print(list3)
上面是简单的列表推导式

list1 = [
    {"num":1,"name":"cheng","sex":"男","score":[100,79,88]},
    {"num":2,"name":"wang","sex":"男","score":[80,94,92]},
    {"num":3,"name":"wu","sex":"女","score":[60,83,77]}
]
需求:将数据的name取出来
常规:
# list2 = []
# for dic in list1:
    list2.append(dic["name"])
print(list2)
列表推导式:
list3 = [dic["name"] for dic in list1]


需求:将数据中性别为男的数据拿出来,分数减一放到list2中
常规:
# list2 = []
# for dic in list1:
#     if dic["sex"] == "男":
#         for score in dic["score"]:
#             list2.append(score-1)
# print(list2)

列表推导式:
list3 = [ score-1 for dic in list1  for score in dic["score"]  if dic["sex"] == "男"]
print(list3)
下面演示怎么拆解列表推导式。
list4 = []
for dic in list1:
    if dic["sex"] == "男":
        for score in dic["score"]:
            list4.append(score-1)
print(list4)



# list3 = [ dic["name"]  for dic in list1 if dic["sex"]=="女"]
# print(list3)

加上楼层的房价预测

import pandas as pd
import numpy as np
from sklearn.preprocessing import MinMaxScaler

all_data = pd.read_csv("上海二手房价.csv")

prices = all_data["房价(元/平米)"].values.reshape(-1,1)
pri_scaler = MinMaxScaler()
pri_scaler.fit(prices)
st_prices = pri_scaler.transform(prices)
这里的归一化,不是自己写的了,用的别人包装好的

# floors = all_data["楼层"].values.reshape(prices.shape[0],prices.shape[1])第一种写法
floors = all_data["楼层"].values.reshape(*prices.shape) # 解包操作。第二种写法。
list= [1,2,3]

***
list= [1,2,3]
print(list[0],list[1],list[2])
123
print(*list)
123
把后面变量的所有参数拿出来给前面的函数执行。
***

flo_scaler = MinMaxScaler()
flo_scaler.fit(floors)
st_floors = flo_scaler.transform(floors)

years = all_data["建成年份"].values.reshape(-1,1)
yer_scaler = MinMaxScaler()
yer_scaler.fit(years)
st_years = yer_scaler.transform(years)

# y = k*floor + k*year + b

# y = k1 * floor + k2 * year + b

k1 = 0
k2 = 0
b = 0
lr = 0.01

epoch = 100
for e in range(epoch):
    pre = k1 * st_floors + k2 * st_years + b

    loss = np.mean((pre - st_prices) ** 2)

    delta_k1 = np.mean((pre - st_prices) * st_floors)
    delta_k2 = np.mean((pre - st_prices) * st_years)
    delta_b = np.mean(pre - st_prices)

    k1 -= lr * delta_k1
    k2 -= lr * delta_k2
    b = b - lr * delta_b

    print(loss)

while True:
    year = int(input("预测的年份:"))
    year = yer_scaler.transform([[year]])# 这里分别对楼层和年份进行归一化,也是为了这里的操作
    floor = int(input("预测的楼层:"))
    floor = flo_scaler.transform([[floor]])这里面要输入一个二级list

    pre = k1 * floor + k2 * year + b

    print(f"预测的房价为:{pri_scaler.inverse_transform(pre).tolist()[0][0]:.2f}")这里要进行反归一化。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值