{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "#### 导入需要的包" ] }, { "cell_type": "code", "execution_count": 236, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import pandas as pd\n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 加载数据集并划分训练集和验证集合" ] }, { "cell_type": "code", "execution_count": 237, "metadata": {}, "outputs": [], "source": [ "class LinearRegression:\n", " def __init__(self):\n", " self.w=None\n", " \n", " def train(self,data,label):\n", " self.w=np.linalg.inv(data.transpose().dot(data)).dot(data.transpose()).dot(label).reshape(-1,1)\n", " return self.w[:-1],self.w[-1]\n", " \n", " def valid(self,data):\n", " return data.dot(self.w)\n", " " ] }, { "cell_type": "code", "execution_count": 238, "metadata": {}, "outputs": [], "source": [ "def loadData(dir):\n", " data = np.loadtxt(dir)\n", " return data" ] }, { "cell_type": "code", "execution_count": 239, "metadata": {}, "outputs": [], "source": [ "data = loadData(\"./housing_data.txt\")\n", "train,test = data[:450],data[450:-1]\n", "train_data,train_label = train[:,:-1],train[:,-1]\n", "test_data,test_label = test[:,:-1],test[:,-1]\n", "\n", "# 拼接全1的列向量\n", "temp = np.ones(train.shape[0]).reshape(-1,1)\n", "train_data = np.concatenate((train_data,temp),axis=1)\n", "temp = np.ones(test.shape[0]).reshape(-1,1)\n", "test_data = np.concatenate((test_data,temp),axis=1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 创建模型和拟合" ] }, { "cell_type": "code", "execution_count": 240, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "w:[[-1.12706397e-01]\n", " [ 4.84679322e-02]\n", " [ 3.51619982e-02]\n", " [ 2.43036682e+00]\n", " [-1.71555914e+01]\n", " [ 3.92937664e+00]\n", " [ 1.05952560e-02]\n", " [-1.40598405e+00]\n", " [ 3.72316544e-01]\n", " [-1.54340774e-02]\n", " [-9.03360601e-01]\n", " [ 9.74047349e-03]\n", " [-5.51630479e-01]]\n", " b:[34.26122511]\n" ] } ], "source": [ "model = LinearRegression()\n", "w,b=model.train(train_data,train_label)\n", "print(\"w:{}\\n b:{}\".format(w,b))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 发现大致在同y=x这一条直线的附近,但是方差较大,达到了41点多,所以考虑一下对数据进行正则化" ] }, { "cell_type": "code", "execution_count": 241, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "MSE:41.956318473984304\n" ] } ], "source": [ "res = model.valid(test_data)\n", "plt.scatter(res,test_label)\n", "plt.show()\n", "print(\"MSE:{}\".format(np.var(res-test_label)))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 将每个属性压缩到0~1" ] }, { "cell_type": "code", "execution_count": 242, "metadata": {}, "outputs": [], "source": [ "def normal(data):\n", " return (data-data.min(0))/(data.max(0)-data.min(0))" ] }, { "cell_type": "code", "execution_count": 243, "metadata": {}, "outputs": [], "source": [ "data = loadData(\"./housing_data.txt\")\n", "data,label = data[:,:-1],data[:,-1]\n", "data=normal(data)\n", "train_data,train_label=data[:450],label[:450]\n", "test_data,test_label = data[450:],label[450:]\n", "# 拼接全1的列向量\n", "temp = np.ones(train_data.shape[0]).reshape(-1,1)\n", "train_data = np.concatenate((train_data,temp),axis=1)\n", "temp = np.ones(test_data.shape[0]).reshape(-1,1)\n", "test_data = np.concatenate((test_data,temp),axis=1)" ] }, { "cell_type": "code", "execution_count": 244, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "w:[[-10.02747464]\n", " [ 4.84679322]\n", " [ 0.95921931]\n", " [ 2.43036682]\n", " [ -8.33761743]\n", " [ 20.50741669]\n", " [ 1.02879936]\n", " [-15.46146605]\n", " [ 8.56328052]\n", " [ -8.08745656]\n", " [ -8.49158965]\n", " [ 3.86287698]\n", " [-19.99108854]]\n", " b:[25.25941823]\n" ] } ], "source": [ "w,b=model.train(train_data,train_label)\n", "print(\"w:{}\\n b:{}\".format(w,b))" ] }, { "cell_type": "code", "execution_count": 245, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "MSE:42.19815228010044\n" ] } ], "source": [ "res = model.valid(test_data)\n", "plt.scatter(res,test_label)\n", "plt.show()\n", "print(\"MSE:{}\".format(np.var(res-test_label)))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 但是发现这个正则化好像并没有起作用,接下来可以对单个变量的与价格的相关度进行观察" ] }, { "cell_type": "code", "execution_count": 246, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "data = loadData(\"./housing_data.txt\")\n", "for i in range(1,data.shape[1]):\n", " plt.subplot(4,4,i)\n", " plt.title(\"plot:{}\".format(i))\n", " plt.plot(data[:,i-1],data[:,-1])\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 有上面的图可以看出来,第四个,第七个特征对结果来书基本上是杂乱无章的,可以考虑去掉" ] }, { "cell_type": "code", "execution_count": 247, "metadata": {}, "outputs": [], "source": [ "data = loadData(\"./housing_data.txt\")\n", "data,label = data[:,:-1],data[:,-1]\n", "data = np.delete(data, [3,6], axis=1)\n", "data=normal(data)\n", "train_data,train_label=data[:450],label[:450]\n", "test_data,test_label = data[450:],label[450:]\n", "# 拼接全1的列向量\n", "temp = np.ones(train_data.shape[0]).reshape(-1,1)\n", "train_data = np.concatenate((train_data,temp),axis=1)\n", "temp = np.ones(test_data.shape[0]).reshape(-1,1)\n", "test_data = np.concatenate((test_data,temp),axis=1)" ] }, { "cell_type": "code", "execution_count": 248, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "w:[[-10.69979518]\n", " [ 4.70479648]\n", " [ 1.50326988]\n", " [ -7.70511938]\n", " [ 21.1497259 ]\n", " [-16.1103564 ]\n", " [ 9.06602378]\n", " [ -8.67871569]\n", " [ -8.71231634]\n", " [ 4.15761417]\n", " [-19.77911638]]\n", " b:[25.45807014]\n" ] } ], "source": [ "w,b=model.train(train_data,train_label)\n", "print(\"w:{}\\n b:{}\".format(w,b))" ] }, { "cell_type": "code", "execution_count": 249, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "MSE:43.15990038227652\n" ] } ], "source": [ "res = model.valid(test_data)\n", "plt.scatter(res,test_label)\n", "plt.show()\n", "print(\"MSE:{}\".format(np.var(res-test_label)))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "> 但是好像,并没有和我预想的一样,结果反而更差了,看来还是要多学习,不知道问题在哪里,可能是因为价格没有正则化?\n", "但是对价格也正则化的话需要考虑怎么将预测后的再反向转换回去,看来还是要多学习\n", "~~反向优化,最为致命~~" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.8" } }, "nbformat": 4, "nbformat_minor": 2 }