shufflepython
⑴ python 随机排序(.random.shuffle)后发生的错误
def main():
import random
items = ['红桃', '黑桃A',........,]
x = random.shuffle(items)
#########################################################################
请注意你这里的用法, random.shuffle(items)是直接操作items的,相当于把items传址调用了,改变了items的元素顺序,shuffle跟sorted等是一样的直接操作传进去的参数,没有返回 值(或者说返回值是None)。
你用 x = random.shuffle(items)那么x永远是None了,你这里可以这样用啊:
def main():
import random
items = ['红桃A', '黑桃A',........,]
x = items[:] # 得到一个items的深拷贝
random.shuffle(x)
# 下面你再用这个打乱的x就可以了,如果你的items后面没什么用的话,可以下面直接用items了像下面这样:
def main():
import random
items = ['红桃A', '黑桃A',........,]
random.shuffle(items)
# 下面用到x的地方用items替换掉。
⑵ python 随机n个列表 并且储存每一个到新的列表
代码截图
listname = ['list_1','list_2'..........]
其中lists的地方需要更换至自己生成的列表。
然后shuffle 一下版list,将顺序权打乱。
再按照 {名称:列表} 这样的方式一一存放至集合中。
比如{'list_1' : [2,2,2,2] , ..........}
⑶ python 编写函数shuffle(alist),功能是将列表打乱
importrandom
lista=[1,2,3,4,5,6]
printlista
#随机后
random.shuffle(lista)
printlista
>>>
[1, 2, 3, 4, 5, 6]
[3, 4, 2, 5, 6, 1]
⑷ python shuffle seed 什么意思
以下是 shuffle() 方法的语法:
import random
random.shuffle (lst )
注意:shuffle()是不能直接访问的,需要导入 random 模块,然后通过 random 静态对回象调用答该方法。
⑸ python怎么随机取列表的值
举例说明:从集合中随机获得10个数
1、定义一个列表集合iRandom = []
2、向iRandom中插入1-60,共60个数字
3、打乱列表顺序专
4、截取属列表前10个数,即为随机获取到的列表集合随机数
importrandom
iRandom=[]#定义随机数列表
listRandom=list(range(1,61))#生成整数型1-60的列表组合
random.shuffle(listRandom)#打乱列表顺序
iRandom=listRandom[0:10]#截取打乱后的前10个值,赋值给新列表iRandom
print('随机列表组合:',iRandom)
⑹ 如何用python实现随机森林分类
大家如何使用scikit-learn包中的类方法来进行随机森林算法的预测。其中讲的比较好的是各个参数的具体用途。
这里我给出我的理解和部分翻译:
参数说明:
最主要的两个参数是n_estimators和max_features。
n_estimators:表示森林里树的个数。理论上是越大越好。但是伴随着就是计算时间的增长。但是并不是取得越大就会越好,预测效果最好的将会出现在合理的树个数。
max_features:随机选择特征集合的子集合,并用来分割节点。子集合的个数越少,方差就会减少的越快,但同时偏差就会增加的越快。根据较好的实践经验。如果是回归问题则:
max_features=n_features,如果是分类问题则max_features=sqrt(n_features)。
如果想获取较好的结果,必须将max_depth=None,同时min_sample_split=1。
同时还要记得进行cross_validated(交叉验证),除此之外记得在random forest中,bootstrap=True。但在extra-trees中,bootstrap=False。
这里也给出一篇老外写的文章:调整你的随机森林模型参数http://www.analyticsvidhya.com/blog/2015/06/tuning-random-forest-model/
这里我使用了scikit-learn自带的iris数据来进行随机森林的预测:
[python]view plain
fromsklearn.
fromsklearn.
importnumpyasnp
fromsklearn.datasetsimportload_iris
iris=load_iris()
#printiris#iris的4个属性是:萼片宽度萼片长度花瓣宽度花瓣长度标签是花的种类:setosaversicolourvirginica
printiris['target'].shape
rf=RandomForestRegressor()#这里使用了默认的参数设置
rf.fit(iris.data[:150],iris.target[:150])#进行模型的训练
#
#随机挑选两个预测不相同的样本
instance=iris.data[[100,109]]
printinstance
print'instance0prediction;',rf.predict(instance[0])
print'instance1prediction;',rf.predict(instance[1])
printiris.target[100],iris.target[109]
- 返回的结果如下:
- (150,)
- [[ 6.3 3.3 6. 2.5]
- [ 7.2 3.6 6.1 2.5]]
- instance 0 prediction; [ 2.]
- instance 1 prediction; [ 2.]
- 2 2
- 在这里我有点困惑,就是在scikit-learn算法包中随机森林实际上就是一颗颗决策树组成的。但是之前我写的决策树博客中是可以将决策树给显示出来。但是随机森林却做了黑盒处理。我们不知道内部的决策树结构,甚至连父节点的选择特征都不知道是谁。所以我给出下面的代码(这代码不是我的原创),可以显示的显示出所有的特征的贡献。所以对于贡献不大的,甚至是负贡献的我们可以考虑删除这一列的特征值,避免做无用的分类。
fromsklearn.cross_validationimportcross_val_score,ShuffleSplit
X=iris["data"]
Y=iris["target"]
names=iris["feature_names"]
rf=RandomForestRegressor()
scores=[]
foriinrange(X.shape[1]):
score=cross_val_score(rf,X[:,i:i+1],Y,scoring="r2",
cv=ShuffleSplit(len(X),3,.3))
scores.append((round(np.mean(score),3),names[i]))
printsorted(scores,reverse=True)
- 显示的结果如下:
- [(0.934, 'petal width (cm)'), (0.929, 'petal length (cm)'), (0.597, 'sepal length (cm)'), (0.276, 'sepal width (cm)')]
- 这里我们会发现petal width、petal length这两个特征将起到绝对的贡献,之后是sepal length,影响最小的是sepal width。这段代码将会提示我们各个特征的贡献,可以让我们知道部分内部的结构。
[python]view plain
⑺ python中怎么随机选取多个不同的数
import random
select_list = range(1,31)
random.sample(select_list,n)#n是你想随机想选出的个数
⑻ Python如何把集合中的9个元素随机分成三组
import random
a=[1,2,3,4,5,6,7,8,9]
random.shuffle(a)
print(a[:3],a[3:6],a[6:])
⑼ python 如何实现数据乱序排列
可是使用random模块里面的shuffle方法
>>> import random
>>> a = [1,2,3,4,5,6]
>>> random.shuffle(a)
>>> a
[6, 4, 2, 3, 5, 1]
⑽ python 怎么从集合中随机数
使用random()函数,或者:
choice(seq) 从序列的元素中随机挑选一个元素,比如random.choice(range(10)),从0到9中随机挑选一个整数。
randrange ([start,] stop [,step]) 从指定范围内,按指定基数递增的集合中获取一个随机数,基数缺省值为1
random() 随机生成下一个实数,它在[0,1)范围内。
seed([x]) 改变随机数生成器的种子seed。如果你不了解其原理,你不必特别去设定seed,Python会帮你选择seed。
shuffle(lst) 将序列的所有元素随机排序
uniform(x, y) 随机生成下一个实数,它在[x,y]范围内。