Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python sklearn二维离散线性回归_Python_Matplotlib_Scikit Learn_Regression_Linear Regression - Fatal编程技术网

Python sklearn二维离散线性回归

Python sklearn二维离散线性回归,python,matplotlib,scikit-learn,regression,linear-regression,Python,Matplotlib,Scikit Learn,Regression,Linear Regression,我在以元组形式对二维分散执行sklearn线性回归时遇到问题。我的数据由csv文件中的文本生成,即使用np.genfromtxt 以下是我的代码中完全可操作的部分: 导入模块: import numpy as np import scipy import matplotlib as mpl import matplotlib.pyplot as plt from pylab import * from matplotlib import pyplot as plt from matplotli

我在以元组形式对二维分散执行sklearn线性回归时遇到问题。我的数据由csv文件中的文本生成,即使用
np.genfromtxt

以下是我的代码中完全可操作的部分:

导入模块:

import numpy as np
import scipy
import matplotlib as mpl
import matplotlib.pyplot as plt
from pylab import *

from matplotlib import pyplot as plt
from matplotlib import rc

from sklearn import linear_model
元组形式的数据集:

bpt_class_sey, logLOIII_blue_sey, logLOIII_red_sey, logOII_OIII_sey = np.genfromtxt('/Users/iMacHome/Downloads/seyfert_LOIII_LOGOIIOIII.csv', delimiter=',', unpack=True)
回归:

regr = linear_model.LinearRegression()

regr.fit(logLOIII_blue_sey, logOII_OIII_sey)
回归图:

axScatter.plot(logLOIII_blue_sey, regr.predict(logLOIII_blue_sey), color='blue',linewidth=3)
现在,我收到以下错误:

IndexError: tuple index out of range
我想知道是否有人知道如何快速解决这个小问题。我已经在网上尽可能多地查看了,但是没有任何东西可以解释为什么会发生这种情况/可能的解决方案,甚至没有任何东西可以解释一种全新的方式,以我现有的格式对数据集执行统计上可靠的线性回归。完整代码如下:

import numpy as np
import scipy
import matplotlib as mpl
import matplotlib.pyplot as plt
from pylab import *

from matplotlib import pyplot as plt
from matplotlib import rc

from sklearn import datasets, linear_model

bpt_class_comp, logLOIII_blue_comp, logLOIII_red_comp, logOII_OIII_comp = np.genfromtxt('/Users/iMacHome/Downloads/composite_LOIII_LOGOIIOIII.csv', delimiter=',', unpack=True)
bpt_class_sf, logLOIII_blue_sf, logLOIII_red_sf, logOII_OIII_sf         = np.genfromtxt('/Users/iMacHome/Downloads/starforming_LOIII_LOGOIIOIII.csv', delimiter=',', unpack=True)
bpt_class_sey, logLOIII_blue_sey, logLOIII_red_sey, logOII_OIII_sey     = np.genfromtxt('/Users/iMacHome/Downloads/seyfert_LOIII_LOGOIIOIII.csv', delimiter=',', unpack=True)

regr = linear_model.LinearRegression()

regr.fit(logLOIII_blue_sey, logOII_OIII_sey)

fig = plt.figure(132)

axScatter = fig.add_subplot(131)
axScatter.set_ylabel(r'$\mathrm{log([OII]/[OIII])}$', fontsize='medium')
axScatter.set_xlabel(r'$\mathrm{log[}L\mathrm{_{[OIII]}\ (erg\ {s^{-1}})]}$', fontsize='medium')
axScatter.set_ylim(-1.5, 1.0)
axScatter.set_xlim(39, 44)
axScatter.tick_params(axis='both', which='major', labelsize=10)
axScatter.tick_params(axis='both', which='minor', labelsize=10)
axScatter.xaxis.labelpad = 10
axScatter.scatter(logLOIII_blue_sey, logOII_OIII_sey, marker="o", c='0.1',s=15,lw=1)
axScatter.scatter(logLOIII_blue_comp, logOII_OIII_comp, marker="o", c='#6633ff',s=15,lw=1)
axScatter.scatter(logLOIII_blue_sf, logOII_OIII_sf, marker="o", c='0.7',s=15,lw=1)

axScatter.plot([logLOIII_blue_sey, regr.predict(logLOIII_blue_sey)], color='blue',linewidth=3)

axScatter = fig.add_subplot(132)
#axScatter.set_ylabel(r'$\mathrm{log([OII]/[OIII])}$', fontsize='medium')
axScatter.set_xlabel(r'$\mathrm{log[}L\mathrm{_{[OIII]} (erg {s^{-1}})]}$', fontsize='medium')
axScatter.set_ylim(-1.5, 1.0)
axScatter.set_xlim(39, 44)
axScatter.tick_params(axis='both', which='major', labelsize=10)
axScatter.tick_params(axis='both', which='minor', labelsize=10)
axScatter.xaxis.labelpad = 10
axScatter.scatter(logLOIII_red_sey, logOII_OIII_sey, marker="o", c='0.1',s=15,lw=1)
axScatter.scatter(logLOIII_red_comp, logOII_OIII_comp, marker="o", c='#6633ff',s=15,lw=1)
axScatter.scatter(logLOIII_red_sf, logOII_OIII_sf, marker="o", c='0.7',s=15,lw=1)

axHistogram = fig.add_subplot(133)

plt.show()
例如,使用:

print logLOIII_blue_sey
收益率:

[ 42.30730188  42.67215043  42.15924954  41.61370469  41.94149606
  41.22327958  42.15549254  42.07837228  41.43995205  41.44106463]

print logLOIII_blue_sey

[ -0.05883232 -0.10934038 -0.10249362  0.71041126  0.12462513  0.69641850
   0.11334571         nan -0.07256197  0.72781828  0.02585652  0.70823414]

Michael,虽然听起来很烦人,但StackOverflow鼓励成员发布MCVE(一个最小完整的可验证代码示例),这意味着您应该使用完整的代码来完成OP,而不仅仅是一些SLOC摘录,以及(可能作为子示例)您的数据文件,这些代码都是设计用来使用的。如果您重新考虑这个StackOverflow政策,并请完成您的帖子,那将是非常好的。一点问题都没有。我不想用代码把问题弄得太多。我认为问题来自Logloii_blue_sey tupleGreat中的“nan”。只需检查一下,您的问题域NaN的公共理智是什么&您已经完成了,对吗?尝试了删除NaN的新csv代码,它仍然没有很好地响应元组。我和我相信许多其他人,衷心感谢您愿意更新您的问题并尝试进行MCVE。然而,这里的内容还不是最小的,也不是完整的,因为它a)有很多额外的东西,比如与问题无关的分散调用,b)需要接收我们无法访问的数据。更好的问题是,MCVE可以用虚假数据和最少的代码行重现您的错误。是的,这意味着要树立一个全新的榜样。不要害怕这样做——有时候在你发布bug之前,它会帮助你解决bug。