From 340d208b943d7bb3a9dde0812e9b921d42b5b306 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=80=81=E6=AF=95=E7=AD=89?= <14647683+lichenyu9849165498@user.noreply.gitee.com> Date: Fri, 5 Jul 2024 14:04:55 +0000 Subject: [PATCH] =?UTF-8?q?7.5=E4=BD=9C=E4=B8=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 老毕等 <14647683+lichenyu9849165498@user.noreply.gitee.com> --- datas.py | 158 +++++++++++++++++++++++++++++++++++++++++++++++++++++ predict.py | 20 +++++++ 2 files changed, 178 insertions(+) create mode 100644 datas.py create mode 100644 predict.py diff --git a/datas.py b/datas.py new file mode 100644 index 0000000..95ac7d5 --- /dev/null +++ b/datas.py @@ -0,0 +1,158 @@ +# 经验是来源于数据 +# 大数据 爬虫 + +# 模拟太原 和吕梁的房价数据 +# 怎么模拟 城市 面积 户型 是不是学区房 装修的风格 +datas = [ + { + "city": "吕梁", + "area": 100, + "rooms": 2, + "school": 1, + "style": 1, + "price": 7900 + }, + { + "city": "吕梁", + "area": 100, + "rooms": 2, + "school": 1, + "style": 1, + "price": 7700 + }, + { + "city": "吕梁", + "area": 100, + "rooms": 2, + "school": 1, + "style": 1, + "price": 8100 + + }, + # 模拟 + { + "city": "吕梁", + "area": 130, + "rooms": 3, + "school": 1, + "style": 1, + "price": 8200 + }, + { + "city": "吕梁", + "area": 135, + "rooms": 3, + "school": 1, + "style": 1, + "price": 8200 + }, + { + "city": "吕梁", + "area": 140, + "rooms": 3, + "school": 1, + "style": 1, + "price": 8500 + }, + + { + "city": "吕梁", + "area": 130, + "rooms": 3, + "school": 1, + "style": 1, + "price": 4900 + }, + { + "city": "吕梁", + "area": 135, + "rooms": 3, + "school": 1, + "style": 1, + "price": 5200 + }, + { + "city": "吕梁", + "area": 140, + "rooms": 3, + "school": 1, + "style": 1, + "price": 6200 + }, + { + "city": "太原", + "area": 100, + "rooms": 2, + "school": 1, + "style": 1, + "price": 7900 + }, + { + "city": "太原", + "area": 100, + "rooms": 2, + "school": 1, + "style": 1, + "price": 7700 + }, + { + "city": "太原", + "area": 100, + "rooms": 2, + "school": 1, + "style": 1, + "price": 8100 + + }, + # 模拟 + { + "city": "太原", + "area": 130, + "rooms": 3, + "school": 1, + "style": 1, + "price": 8200 + }, + { + "city": "太原", + "area": 135, + "rooms": 3, + "school": 1, + "style": 1, + "price": 8200 + }, + { + "city": "太原", + "area": 140, + "rooms": 3, + "school": 1, + "style": 1, + "price": 8500 + }, + + { + "city": "太原", + "area": 130, + "rooms": 3, + "school": 1, + "style": 1, + "price": 8400 + }, + { + "city": "太原", + "area": 135, + "rooms": 3, + "school": 1, + "style": 1, + "price": 8200 + }, + { + "city": "太原", + "area": 140, + "rooms": 3, + "school": 2, + "style": 2, + "price": 8500 + }, + +] diff --git a/predict.py b/predict.py new file mode 100644 index 0000000..a807d4f --- /dev/null +++ b/predict.py @@ -0,0 +1,20 @@ +import numpy as np +from datas import datas + +# 城市到数字的映射 +cityMark = {"吕梁": 1, "太原": 2} + +# 构建特征矩阵 X 和目标向量 Y +X = np.array([[cityMark[item["city"]], item["area"], item["rooms"], item["school"], item["style"]] for item in datas]) +Y = np.array([item["price"] for item in datas]) + +# 使用正规方程求解参数 theta +try: + theta = np.linalg.pinv(X.T.dot(X)).dot(X.T).dot(Y) + print("模型参数 theta:", theta) + # 预测一个新数据点的价格 + new_data_point = np.array([2, 100, 2, 1, 1]) + predicted_price = theta.dot(new_data_point) + print("预测价格:", predicted_price) +except np.linalg.LinAlgError: + print("警告:X^T X 接近奇异,无法计算逆矩阵。") \ No newline at end of file -- Gitee