凌乱的散点图回归线:Python

2024-02-03

在python 2.7.6,matlablib,scikit learn 0.17.0中,当我在散点图上制作多项式回归线时,多项式曲线将非常混乱,如下所示:

脚本是这样的:它将读取两列浮动数据并绘制散点图和回归

import pandas as pd
import scipy.stats as stats
import pylab 
import numpy as np
import matplotlib.pyplot as plt
import statsmodels.api as sm
import pylab as pl
import sklearn
from sklearn import preprocessing
from sklearn.cross_validation import train_test_split
from sklearn import datasets, linear_model
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import PolynomialFeatures
from sklearn.pipeline import make_pipeline
from sklearn.linear_model import Ridge

df=pd.read_csv("boston_real_estate_market_clean.csv")

LSTAT = df['LSTAT'].as_matrix()

LSTAT=LSTAT.reshape(LSTAT.shape[0], 1)

MEDV=df['MEDV'].as_matrix()

MEDV=MEDV.reshape(MEDV.shape[0], 1)

# Train test set split
X_train1, X_test1, y_train1, y_test1 =                train_test_split(LSTAT,MEDV,test_size=0.3,random_state=1)

# Ploynomial Regression-nst order

plt.scatter(X_test1, y_test1, s=10, alpha=0.3)

for degree in [1,2,3,4,5]:
    model = make_pipeline(PolynomialFeatures(degree), Ridge())
    model.fit(X_train1,y_train1)
    y_plot = model.predict(X_test1)
    plt.plot(X_test1, y_plot, label="degree %d" % degree
             +'; $q^2$: %.2f' % model.score(X_train1, y_train1)
             +'; $R^2$: %.2f' % model.score(X_test1, y_test1))


plt.legend(loc='upper right')

plt.show()

我猜原因是因为“X_test1,y_plot”没有正确排序?

X_test1 是一个像这样的 numpy 数组:

[[  5.49]
 [ 16.65]
 [ 17.09]
 ....
 [ 25.68]
 [ 24.39]]

yplot 是一个像这样的 numpy 数组:

[[ 29.78517812]
 [ 17.16759833]
 [ 16.86462359]
 [ 23.18680265]
...[ 37.7631725 ]]

我尝试用这个排序:

 [X_test1, y_plot] = zip(*sorted(zip(X_test1, y_plot), key=lambda y_plot: y_plot[0]))

     plt.plot(X_test1, y_plot, label="degree %d" % degree
              +'; $q^2$: %.2f' % model.score(X_train1, y_train1)
              +'; $R^2$: %.2f' % model.score(X_test1, y_test1))

曲线现在看起来正常,但结果很奇怪,R^2 为负。

任何大师都可以告诉我真正的问题是什么或如何正确排序吗?谢谢你!


虽然现在的图是正确的,但您在排序时弄乱了 X_test1 与 y_test1 的配对,因为您忘记了以相同的方式对 y_test1 进行排序。 最好的解决方案是在拆分后立即排序。然后稍后计算的 y_plot 将自动正确:(这里未经测试的示例使用 numpy 作为 np)

X_train1, X_test1, y_train1, y_test1 =             train_test_split(LSTAT,MEDV,test_size=0.3,random_state=1)

sorted_index = np.argsort(X_test1)
X_test1 = X_test1[sorted_index]
y_test1 = y_test1[sorted_index]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

凌乱的散点图回归线:Python 的相关文章

随机推荐

  • DropDownList 引导样式

    我是 ASP NET 新手 一直在学习 asp net 站点上的 ASP NET MVC 5 入门教程 我遇到了一个问题 我似乎无法使用引导程序来设计我的下拉框 我目前正在使用下面的代码 该代码可以在标准下拉列表中显示它 但我不确定如何使样
  • 类似字典的数据结构。这是一个好的做法吗?

    我需要一个数据结构来存储不同类型的对象 String Boolean和其他课程 正在使用一个Map
  • 如何在 SQL Server 中透视文本列?

    我的数据库中有一个这样的表 SQL Server 2008 ID Type Desc C 0 Assets No damage C 0 Environment No impact C 0 People No injury or health
  • AngularJS Promise $q.all 和 SignalR

    我已经检查了有关承诺的答案数量 但我无法让我的代码工作 也许我在其他地方做了一些非常错误的事情 一般来说 我正在使用 AngularJS 和 SignalR 开发小型测试应用程序 我有 signalR 服务 如下所示 function us
  • 使用 Spark DataFrame 获取列上的不同值

    使用 Spark 1 6 1 版本 我需要获取列上的不同值 然后在其之上执行一些特定的转换 该列包含超过 5000 万条记录 并且可以增长得更大 我明白做一个distinct collect 会将调用带回驱动程序 目前我正在执行以下任务 有
  • Google Analytics with jQuery - 在标签中显示路径名

    我已经创建了跟踪 效果很好 如下所示 a external click function gaq push trackEvent Exit Links Click this attr href a href http example com
  • web.config 位置路径属性上的正则表达式(带参数)

    有没有办法做这样的事情
  • 如何在 MySQL 的 CONCAT 中使用 GROUP_CONCAT

    如果我在 MySQL 中有一个包含以下数据的表 id Name Value 1 A 4 1 A 5 1 B 8 2 C 9 如何将其转换为以下格式 id Column 1 A 4 5 B 8 2 C 9 我想我必须使用GROUP CONCA
  • javascript内部如何表示大于Number.MAX_SAFE_INTEGER的整数? [复制]

    这个问题在这里已经有答案了 在 JavaScript 中 数字在内部表示为双精度浮点数 这意味着有 53 位可用于表示整数值 有一个Number MAX SAFE INTEGER说明这一点的常数 等于Math pow 2 53 1 但是 在
  • Objective C - 错误:“需要类型”

    我在一些我认为很简单的事情上遇到了一个非常奇怪的错误 import
  • 通过 LDAP 进行 Kerberos 身份验证

    我正在开发控制台应用程序 它使用 ldap DirectoryServices Protocols 从活动目录中获取用户数据 目前 我可以使用 SSL TLS 和简单连接 既不是 SSL 也不是 TLS 的基本身份验证来获取数据 但现在我想
  • 如何将 ViewModel 中的数据发送到控制器方法中?

    我正在尝试将 JavaScript 函数中的数据发送到控制器方法中 当我有一个简单的模型时它工作正常 但是当我在使用包含多个对象的 ViewModel 时尝试发布数据时它不起作用 换句话说 我有一个登录页面 并且从我的角度来看 我将数据发布
  • Android 进度条不显示

    private Handler handler new Handler Override public void handleMessage Message msg removeDialog 0 switch msg what case S
  • 如何在自动热键中将字符串转换为数字?

    FormatTime CurrentMinute m将当前分钟分配给变量 CurrentMinute 其值是字符串 而不是数字 我想做一些计算 CurrentMinute 那么如何将其转换为数字呢 感谢您提前提供任何帮助 AutoHotke
  • 有没有办法在 matplotlib 中制作多个水平箱线图?

    我正在尝试制作一个 matplotlib 图 该图将多个水平箱线图彼此堆叠 该文档展示了如何制作单个水平箱线图以及如何制作多个垂直方向的图在这个部分 http matplotlib sourceforge net api pyplot ap
  • 无法访问刚刚创建的文件[重复]

    这个问题在这里已经有答案了 我的程序包含一个窗体和七个用户控件 我正在使用 MS Visual Studio 2010 C 语言 我的计划 将 txt 文件中的所有文本显示到 UserControl 中的文本框中 My Aim 我想检查 t
  • Crashlytics 与 proguard 崩溃

    我做了 Fabric 在他们的文档中要求的一切 renamesourcefileattribute SourceFile keepattributes Annotation keepattributes SourceFile LineNum
  • 在 Webview 中运行 javascript 代码

    我有一个在 android 中使用的 webview 我试图在单击按钮时触发 javascript 我正在尝试使用下面的代码将类的颜色更改为红色 但我似乎无法让它发挥作用 final WebView wb WebView findViewB
  • 找不到 com.sun.xml.rpc.tools.ant.Wscompile

    我需要使用以下服务 http mihansmscenter com webservice wsdl http mihansmscenter com webservice wsdl所以我应该使用 jax rpc 然后我将 jax rpc 插件
  • 凌乱的散点图回归线:Python

    在python 2 7 6 matlablib scikit learn 0 17 0中 当我在散点图上制作多项式回归线时 多项式曲线将非常混乱 如下所示 脚本是这样的 它将读取两列浮动数据并绘制散点图和回归 import pandas a