我正在尝试运行yhat 在他们关于Python中的随机森林的文章中提供的代码,但我不断收到以下错误消息:
File "test_iris_with_rf.py", line 11, in <module>
df['species'] = pd.Factor(iris.target, iris.target_names)
AttributeError: 'module' object has no attribute 'Factor'
Run Code Online (Sandbox Code Playgroud)
码:
from sklearn.datasets import load_iris
from sklearn.ensemble import RandomForestClassifier
import pandas as pd
import numpy as np
iris = load_iris()
df = pd.DataFrame(iris.data, columns=iris.feature_names)
print df
print iris.target_names
df['is_train'] = np.random.uniform(0, 1, len(df)) <= .75
df['species'] = pd.Factor(iris.target, iris.target_names)
df.head()
Run Code Online (Sandbox Code Playgroud) 我有一组4k文本文档.他们属于10个不同的类别.我试图看看随机森林方法如何进行分类.问题是我的特征提取类提取了200k特征.(单词,双字母组合,搭配等的组合)这是高度稀疏的数据,sklearn中的随机森林实现不适用于稀疏数据输入.
问:我有什么选择?减少功能数量?怎么样 ?问:是否存在使用稀疏数组的随机林的实现.
我的相关代码如下:
import logging
import numpy as np
from optparse import OptionParser
import sys
from time import time
#import pylab as pl
from sklearn.datasets import load_files
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.ensemble import RandomForestClassifier
from special_analyzer import *
data_train = load_files(RAW_DATA_SRC_TR)
data_test = load_files(RAW_DATA_SRC_TS)
# split a training set and a test set
y_train, y_test = data_train.target, data_test.target
vectorizer = CountVectorizer( analyzer=SpecialAnalyzer()) # SpecialAnalyzer is my class extracting features from text
X_train = vectorizer.fit_transform(data_train.data)
rf = RandomForestClassifier(max_depth=10,max_features=10)
rf.fit(X_train,y_train)
Run Code Online (Sandbox Code Playgroud) 我有两个(不同长度)数字列表.使用Python,我想用10个箱子来计算直方图.然后我想用标准内核(高斯内核,平均值= 0,sigma = 1)平滑这两个直方图.然后我想计算这两个平滑直方图之间的KL距离.我找到了一些关于直方图计算的代码,但不确定如何应用标准内核进行平滑,然后如何计算KL距离.请帮忙.