小编ily*_*nam的帖子

KFold和ShuffleSplit CV有什么区别?

似乎每次迭代对象时KFold都会生成相同的值,而Shuffle Split每次都会生成不同的索引.它是否正确?如果是这样,一个用户有什么用途?

cv = cross_validation.KFold(10, n_folds=2,shuffle=True,random_state=None)
cv2 = cross_validation.ShuffleSplit(10,n_iter=2,test_size=0.5)
print(list(iter(cv)))
print(list(iter(cv)))
print(list(iter(cv2)))
print(list(iter(cv2)))
Run Code Online (Sandbox Code Playgroud)

产生以下输出:

[(array([1, 3, 5, 8, 9]), array([0, 2, 4, 6, 7])), (array([0, 2, 4, 6, 7]), array([1, 3, 5, 8, 9]))]                                     
[(array([1, 3, 5, 8, 9]), array([0, 2, 4, 6, 7])), (array([0, 2, 4, 6, 7]), array([1, 3, 5, 8, 9]))]                                     
[(array([4, 6, 3, 2, 7]), array([8, 1, 9, 0, 5])), (array([3, 6, 7, 0, 5]), array([9, 1, 8, 4, 2]))]                                     
[(array([3, 0, 2, 1, 7]), array([5, …
Run Code Online (Sandbox Code Playgroud)

python scipy scikit-learn

29
推荐指数
1
解决办法
8550
查看次数

如果我正在编译f90或f95代码,gfortran如何判断?

我明白gfortran可以编译f90或f95吗?它如何知道它正在编译哪一个?还可以编译f77代码吗?ubuntu已经有了fortran编译器,还是需要下载gfortran?

fortran gfortran fortran77 fortran90

10
推荐指数
2
解决办法
2万
查看次数

在标准化训练数据之后使用sklearn预测新数据

我使用Sklearn通过以下步骤构建线性回归模型(或任何其他模型):

X_train和Y_train是训练数据

  1. 标准化培训数据

      X_train = preprocessing.scale(X_train)
    
    Run Code Online (Sandbox Code Playgroud)
  2. 适合模型

     model.fit(X_train, Y_train)
    
    Run Code Online (Sandbox Code Playgroud)

一旦模型与缩放数据拟合,我如何使用拟合模型预测新数据(一次一个或多个数据点)?

我正在使用的是

  1. 缩放数据

    NewData_Scaled = preprocessing.scale(NewData)
    
    Run Code Online (Sandbox Code Playgroud)
  2. 预测数据

    PredictedTarget = model.predict(NewData_Scaled)
    
    Run Code Online (Sandbox Code Playgroud)

我想我错过了一个转换函数,preprocessing.scale以便我可以用训练过的模型保存它,然后将它应用到新的看不见的数据上?请帮忙.

python machine-learning scikit-learn

8
推荐指数
2
解决办法
6794
查看次数

python传递对象作为参数

如何在调用类方法时将对象作为参数传递给类方法并调用传递对象的方法?

说我有:

class myclass:
    def __init__(self):
        pass
    def myfunc(self, something):
        something.do()


anobject = blah.xyz()

another_obj = myclass()
another_obj.myfunc(anobject)
Run Code Online (Sandbox Code Playgroud)

python oop object

6
推荐指数
1
解决办法
4万
查看次数

为什么pandas将unsigned int大于2**63-1转换为对象?

当我将numpy数组转换为pandas数据帧时,如果整数大于2 ^ 63 - 1,pandas会将uint64类型更改为对象类型.

import pandas as pd
import numpy as np

x = np.array([('foo', 2 ** 63)], dtype = np.dtype([('string', np.str_, 3), ('unsigned', np.uint64)]))
y = np.array([('foo', 2 ** 63 - 1)], dtype = np.dtype([('string', np.str_, 3), ('unsigned', np.uint64)]))

print pd.DataFrame(x).dtypes.unsigned
dtype('O')
print pd.DataFrame(y).dtypes.unsigned
dtype('uint64')
Run Code Online (Sandbox Code Playgroud)

这很烦人,因为我无法以表格格式将数据帧写入hdf文件:

pd.DataFrame(x).to_hdf('x.hdf', 'key', format = 'table')
Run Code Online (Sandbox Code Playgroud)

输出继电器:

TypeError:无法序列化[unsigned]列,因为其数据内容为[integer] object dtype

有人可以解释类型转换吗?

python numpy pytables pandas

6
推荐指数
1
解决办法
1442
查看次数

执行pandas.DataFrame.groupby()。sum()时保留非数字列

在执行pandas.DataFrame.groupby()。sum()时,可以保留非数字列(第一个出现的值)吗?

例如,我有一个这样的DataFrame:

df = pd.DataFrame({'A' : ['aa1', 'aa2', 'aa1', 'aa2'],'B' : ['bb1', 'bbb1', 'bb2', 'bbb2'],'C' : ['cc1', 'ccc2', 'ccc3', 'ccc4'],'D' : [1, 2, 3, 4],'E' : [1, 2, 3, 4]})
>>> df
     A     B     C  D  E
0  aa1   bb1   cc1  1  1
1  aa2  bbb1  ccc2  2  2
2  aa1   bb2  ccc3  3  3
3  aa2  bbb2  ccc4  4  4
>>> df.groupby(["A"]).sum()
     D  E
A        
aa1  4  4
aa2  6  6
Run Code Online (Sandbox Code Playgroud)

以下是我想要获得的结果:

     B    C    D  E
A        
aa1  bb1 …
Run Code Online (Sandbox Code Playgroud)

python pandas

6
推荐指数
2
解决办法
2231
查看次数

除以0后,在numpy数组中将NaN替换为0

我正在划分两个numpy数组:

>>> import numpy as np
>>> a1 = np.array([[ 0,  3],
                   [ 0,  2]])
>>> a2 = np.array([[ 0,  3],
                   [ 0,  1]])
>>> d = a1/a2
>>> d
array([[ nan,   1.],
       [ nan,   2.]])
>>> where_are_NaNs = np.isnan(d)
>>> d[where_are_NaNs] = 0
>>> d
>>> array([[ 0.,  1.],
           [ 0.,  2.]])
Run Code Online (Sandbox Code Playgroud)

我正在寻找一种方法来获得0而不是使用for循环的Nan?

numpy fillna()和pandas 有类似的功能吗?

python arrays numpy divide-by-zero

5
推荐指数
2
解决办法
6697
查看次数

'if x%2:return True',如果数字可被2整除,那么不会返回True吗?

我不明白是怎么if not x % 2: return True运作的.如果x不能被2整除,那么这是不是意味着?返回True?这就是我在这段代码中看到的.

我看到它if not x % 2: return True会返回相反的情况,如果一个数字可被2整除,则返回True.

我只是不明白这部分语法是如何工作的.

def is_even(x):
    if not x % 2:
        return True
    else:
        return False
Run Code Online (Sandbox Code Playgroud)

python python-2.7

5
推荐指数
2
解决办法
3585
查看次数

为什么使用 shuffle 调用 KFold 生成器会给出相同的索引?

使用 sklearn,当你创建一个新的 KFold 对象并且 shuffle 为真时,它会产生一个不同的、新的随机折叠索引。但是,即使 shuffle 为真,来自给定 KFold 对象的每个生成器也会为每个折叠提供相同的索引。为什么它会这样工作?

例子:

from sklearn.cross_validation import KFold
X = np.array([[1, 2], [3, 4], [1, 2], [3, 4]])
y = np.array([1, 2, 3, 4])
kf = KFold(4, n_folds=2, shuffle = True)
?
for fold in kf:
    print fold
?
print '---second round----'
?
for fold in kf:
    print fold
Run Code Online (Sandbox Code Playgroud)

输出:

(array([2, 3]), array([0, 1]))
(array([0, 1]), array([2, 3]))
---second round----#same indices for the folds
(array([2, 3]), array([0, 1]))
(array([0, 1]), array([2, 3]))
Run Code Online (Sandbox Code Playgroud)

这个问题的动机是对这个 …

python scikit-learn cross-validation

5
推荐指数
1
解决办法
2167
查看次数

汇总数据并获得总和和计数

我在python中有一个有很多行的对象:

输入:

    Team1     Player1     idTrip13     133
    Team2     Player333   idTrip10     18373
    Team3     Player22    idTrip12     17338899
    Team2     Player293   idTrip02     17656
    Team3     Player20    idTrip11     1883
    Team1     Player1     idTrip19     19393
Run Code Online (Sandbox Code Playgroud)

我需要聚合这些数据(如数据透视表).

OUTPUT我正在努力:

Team1   Player1 : 2 trips : sum(133+19393)
Team2   Player333 : 1 trip : 18373; Player293 : 1 trip : 17656
Team3   Player22 : 1 trip : 17338899; Player20 : 1 trip : 1883
Run Code Online (Sandbox Code Playgroud)

有人可以建议在Python中使用适当的对象,以便我可以有以下输出吗?

print team, player, trips, time
Run Code Online (Sandbox Code Playgroud)

python group-by aggregate pandas

4
推荐指数
1
解决办法
6910
查看次数

将 python 数据帧传递给对象并更改数据帧

我是Python新手,我试图将参数(数据帧)传递给函数并通过读取Excel文件来更改参数(数据帧)的值。(假设我已经导入了所有必需的文件)

我注意到 python 在这里没有通过引用传递参数,并且我最终没有初始化/更改数据帧。

我读到 python 通过对象引用传递,而不是通过值或引用传递。但是,我不需要更改相同的数据框。

输出是:类'pandas.core.frame.DataFrame'>

from pandas import DataFrame as df
class Data:
   x = df

   @staticmethod
   def import_File(df_name , file):
       df_name  = pd.io.excel.read_excel(file.replace('"',''), sheetname='Sheet1', header=0, skiprows=None, skip_footer=0, index_col=None, parse_cols=None, parse_dates=True, date_parser=True, na_values=None, thousands=None, convert_float=True, has_index_names=None, converters=None, engine=None )


def inputdata():
    Data.import_File(Data.x,r"C:\Users\Data\try.xlsx")
    print(Data.x)
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas

1
推荐指数
1
解决办法
5359
查看次数

python中的属性方法

有人可以解释我这种行为,为什么1)在2)和3)工作时不起作用

1)

class bm(object):
    def __init__(self,val):
        self.a=val
    def get(self):
        return self.a
    def set(self,val):
        self.a=val
        a=property(get,set)


In [43]: ob1=bm('vin')
Run Code Online (Sandbox Code Playgroud)

给我递归错误,而下面的代码工作正常

2)

class bm(object):
    def __init__(self,val):
        self._a=val
    def get(self):
        return self._a
    def set(self,val):
        self._a=val
        a=property(get,set)


In [43]: ob1=bm('vin')
Run Code Online (Sandbox Code Playgroud)

工作正常.我可以访问ob.a并执行ob.a =''

即使这样也可以

3)

class bm(object):
    def __init__(self,val):
        self.a=val
    def get(self):
        return self._a
    def set(self,val):
        self._a=val
        a=property(get,set)

In [43]: ob1=bm('vin')
Run Code Online (Sandbox Code Playgroud)

工作正常.我可以访问ob.a并执行ob.a =''

python

0
推荐指数
1
解决办法
1375
查看次数