diff --git a/datas.py b/datas.py new file mode 100644 index 0000000000000000000000000000000000000000..95ac7d5b31bd17489c9ff1f511be3be45c82ab11 --- /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 0000000000000000000000000000000000000000..a807d4fda1ab08cdad2e2b171b545535f7ca7421 --- /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