使用scikit-learn的随机森林对西瓜进行分类

1、数据源:  http://blog.csdn.net/wiking__acm/article/details/50971461
3、代码:
import pandas as pd
from sklearn import preprocessing
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split
from sklearn.model_selection import GridSearchCV
from sklearn.metrics import accuracy_score,make_scorer

train_data = pd.read_csv('D:\\workspace\\kaggle\\data\\zhouzhihua-gua\\train_data.csv')
test_data = pd.read_csv('D:\\workspace\\kaggle\\data\\zhouzhihua-gua\\test_data.csv')

#将数据转化未label(0-N)形式
def encode_features(df_train, df_test):
      features = ['色泽', '根蒂', '敲声', '纹理', '脐部', '触感']
      df_combined = pd.concat([df_train[features], df_test[features]])
      
      for feature in features:
            le = preprocessing.LabelEncoder()
            le = le.fit(df_combined[feature])
            df_train[feature] = le.transform(df_train[feature])
            df_test[feature] = le.transform(df_test[feature])
      
      return df_train, df_test
 
def simplify_interval_info(df):
      bins_density = (0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8)
      bins_sugar = (0, 0.1, 0.2, 0.3, 0.4, 0.5)
      
      group_name_density = [0, 1, 2, 3, 4, 5, 6, 7]
      group_name_sugar = [0, 1, 2, 3, 4]
      
      category_density = pd.cut(df['密度'], bins_density, labels=group_name_density)
      categroy_sugar = pd.cut(df['含糖率'], bins_sugar, labels=group_name_sugar)
      
      df['密度'] = category_density
      df['含糖率'] = categroy_sugar
      
      return df
      
      

train_data, test_data = encode_features(train_data, test_data)
train_data = simplify_interval_info(train_data)
test_data = simplify_interval_info(test_data)

X_all = train_data.drop(['好瓜'], axis=1)
y_all = train_data['好瓜']
y_result = [1,0,0]


num_test = 0.50
X_train, X_test, y_train, y_test = train_test_split(X_all, y_all, test_size=num_test, random_state=3)

# Choose some parameter combinations to try
parameters = {'n_estimators':[5,6,7],
                     'criterion':['entropy', 'gini']
                     }
                     
# Type of scoring used to compare parameter combinations
acc_scorer = make_scorer(accuracy_score)
            
clf = RandomForestClassifier()

# Run the grid search
grid_obj = GridSearchCV(clf, parameters, scoring=acc_scorer)
grid_obj = grid_obj.fit(X_train, y_train)

# Set the clf to the best combination of parameters
clf = grid_obj.best_estimator_

clf = clf.fit(X_train, y_train)
test_predictions = clf.predict(X_test)
print("测试集准确率:   %s " % accuracy_score(y_test, test_predictions))

predictions = clf.predict(test_data)
print("最终准确率:   %s " % accuracy_score(y_result, predictions))
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
随机森林(Random Forest)是一种集成学习(Ensemble Learning)方法,它通过构建多个决策树来进行分类或回归。scikit-learn是一个流行的Python机器学习库,提供了实现随机森林算法的工具。 在scikit-learn中,可以使用ensemble模块中的RandomForestClassifier进行分类问题,或者使用RandomForestRegressor进行回归问题随机森林通过随机选择特征子集和样本子集来构建多个决策树,然后通过投票或平均的方式来得到最终的预测结果。 使用scikit-learn中的随机森林算法,需要先导入相关的类和函数,然后创建一个随机森林模型对象,并对其进行训练和预测。例如,下面是一个使用随机森林分类进行分类的示例代码: ```python from sklearn.ensemble import RandomForestClassifier from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split # 加载数据集 data = load_iris() X = data.data y = data.target # 划分训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # 创建随机森林分类器 rf = RandomForestClassifier(n_estimators=100) # 训练模型 rf.fit(X_train, y_train) # 预测 predictions = rf.predict(X_test) ``` 这只是一个简单的示例,你可以根据自己的需求进行参数调整和功能扩展。随机森林在处理各种机器学习问题时具有较好的性能和鲁棒性,你可以进一步了解scikit-learn文档中关于RandomForestClassifier和RandomForestRegressor的详细用法和参数设置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值