{ "question_id": 7461537, "question_title": "线性回归", "question_content": "

把以下数据制作成csv数据文件,并命名为LR_data_exam.csv。 
\n对该文件内的数据进行线性回归
\n画出数据的散点图
\n建立线性回归模型并拟合
\n打印拟合结果(参数) 
\n画出数据和拟合直线的图
\n用model.predict预测x为10,20,30时的结果
\n用拟合参数预测x为40,50,60时的结果
\n   battery,KM
\n   2,12
\n   5,31
\n   8,45
\n   8,52
\n   13,79
\n   15,85
\n   17,115
\n   19,119
\n   21,135
\n   24,145

", "difficulty": "简单", "answer_id": 53446955, "answer_content": "
\nimport numpy as np\nimport csv\nimport pandas as pd\nimport matplotlib.pyplot as plt\nfrom sklearn.linear_model import LinearRegression\nimport matplotlib\nmatplotlib.rcParams['font.sans-serif'] = ['SimHei']\nmatplotlib.rcParams['font.family']=['sans-serif']\n\ndata = '''battery,KM\n   2,12\n   5,31\n   8,45\n   8,52\n   13,79\n   15,85\n   17,115\n   19,119\n   21,135\n   24,145'''.split('\\n')\nfor i,j in enumerate(data):\n    data[i] = j.replace(' ', '').split(',')\n\nwith  open('LR_data_exam.csv','w') as csvFile: #一行一行地写入到csv文件中\n    writer = csv.writer(csvFile)\n    #先写columns_name\n    writer.writerow(data[0])\n    #写入多行用writerows\n    writer.writerows(data[1:])
\n\n

 LR_data_exam.csv:

\n\n

\"\"

\n\n
\ndataframe = pd.read_csv("LR_data_exam.csv", sep=",")\nx = dataframe['battery'].tolist()\ny = dataframe['KM'].tolist()\n\n# 画出数据的散点图\nfig = plt.figure()\nfig.set_size_inches(10, 4)   # 整个绘图区域的宽度10和高度4\nax = fig.add_subplot(1, 2, 1)  # 整个绘图区分成一行两列,当前图是第一个。\n# 画出原始数据的散点图。\nax.set_title("散点图")\nax.set_xlabel("battery")\nax.set_ylabel("KM")\nax.scatter(x, y)\nplt.show()
\n\n

\"\"

\n\n
\nregressor = LinearRegression()\nregressor = regressor.fit(np.reshape(x,(-1, 1)),np.reshape(y,(-1, 1)))\nprint(regressor.coef_, regressor.intercept_)  # 打印拟合结果(参数)
\n\n
\n[[6.28763667]] [-1.19680404]
\n\n
\n# 画出数据和拟合直线的图\nplt.scatter(x, y)\nplt.plot(np.reshape(x,(-1,1)), regressor.predict(np.reshape(x,(-1,1))))\nplt.xlabel("battery") \nplt.ylabel("KM") \nplt.title("拟合结果")\nplt.show()
\n\n

\"\"

\n\n
\nprint(regressor.predict([[10], [20], [30]]))  # model.predict预测x为10,20,30时的结果\nfor i in [40,50,60]:\n    print(regressor.coef_*i + regressor.intercept_)   #用拟合参数预测x为40,50,60时的结果
\n\n
\n[[ 61.67956266]\n [124.55592935]\n [187.43229605]]\n[[250.30866274]]\n[[313.18502944]]\n[[376.06139613]]
\n", "tag_name": "python", "python": "import numpy as np\nimport csv\nimport pandas as pd\nimport matplotlib.pyplot as plt\nfrom sklearn.linear_model import LinearRegression\nimport matplotlib\nmatplotlib.rcParams['font.sans-serif'] = ['SimHei']\nmatplotlib.rcParams['font.family']=['sans-serif']\ndata = '''battery,KM\n 2,12\n 5,31\n 8,45\n 8,52\n 13,79\n 15,85\n 17,115\n 19,119\n 21,135\n 24,145'''.split('\\n')\nfor i,j in enumerate(data):\n data[i] = j.replace(' ', '').split(',')\nwith open('LR_data_exam.csv','w') as csvFile: \n writer = csv.writer(csvFile)\n writer.writerow(data[0])\n writer.writerows(data[1:])\n", "topic_link": "https://bbs.csdn.net/topics/600470502", "status": 0, "keywords": "图算法,算法高阶,图的表示,基本的图算法", "license": "csdn.net", "notebook": { "python": "https://codechina.csdn.net/csdn/csdn-daily-code/-/jupyter/master/data/notebook/answer/ipynb/python/26.ipynb?type=file" } }