私はデータを読むとき、文字のデータだと nominal scale で読んでました。
fugusuki さんは、次のように ordinal scale で読んでいました。
                    ParseChar(s[232], '9', "1392"),        //DEMO_X order
                    ParseChar(s[232], '9', "3912"),        //frequency order
                    ParseChar(s[233], '9', "14239"),    //frequency order & NA is max
                    ParseChar(s234, 'Z', "3ZECBG192AD678F45"),    //frequency order

                    ...

                    ParseChar(s[4], '9', "9NPSYZQXDH2EIT3GL0WOCBFVKJMU1AR"),    //DEMO_X order
                    ParseChar(s[8], 'Z', "ECBADZ"),    //DEMO_X order
                    ParseChar(s234, 'Z', "G6CE138F27A9ZDB45"),    //DEMO_X order

scale of measure を変えたとき、ランダムフォレストの精度はどのように変わるか?

データ : 1500行 * 16列をすべて[0,1)の乱数で埋めます。
結果 : 次のように線形結合したもの
        double sum = 0;
        for (int i = 0; i < 16; i++) {
            sum += (i + 1) * data[i];
        }
        return sum;

線形回帰の mean squared error はほぼ0になります。

17列目にこの結果を加えます。17列目の scale of measure を変化させます。

Result :
  filename : mean_squared_error
      ratio.csv : 0.0845435265495     #  ランダムフォレストは結果を知っていてもこれだけ間違う。ratio ではなく ordinal で利用しているため。
    ordinal.csv : 0.0751172274726     #  ratio から ordinal に変えたもの。精度は上と同じ。
   ordinal2.csv : 27.6883824886     #  2 class の ordinal に変えたもの。各 class 750行。
   nominal2.csv : 27.9133721943     #  2 class の nominal に変えたもの(2 class の ordinal に変えた後、値をシャッフルした)。精度は上と同じ。2 class の時はordinal でも nominal でも同じため。
  ordinal10.csv : 4.58903426525     #  10 class の ordinal に変えたもの。各 class 150行。
  nominal10.csv : 4.44013624915     #  10 class の nominal に変えたもの。まだ精度は上と同じ。
  ordinal15.csv : 2.85090275868     #  ここから ordinal は精度が上がり、nominal は落ちます。
  nominal15.csv : 5.88735884382
  ordinal20.csv : 1.82802889608
  nominal20.csv : 14.173354459
  ordinal25.csv : 1.33343285828
  nominal25.csv : 6.90935970648
  ordinal30.csv : 1.19245365617
  nominal30.csv : 32.4747773273
  ordinal60.csv : 0.432082507047
  nominal60.csv : 34.1341532543
    nominal.csv : 36.7485378994     #  17列目は乱数と同じです。
   donotuse.csv : 37.5333103618     #  16列しか使わなかった場合。


Source :
# -*- coding: utf-8 -*-
from sklearn.cross_validation import cross_val_score
from sklearn.ensemble import RandomForestRegressor
import numpy as np

print "%15s : %s" % ("filename","mean_squared_error")
filenames = ["ratio.csv","ordinal.csv","ordinal2.csv","nominal2.csv","ordinal10.csv","nominal10.csv","ordinal15.csv","nominal15.csv","ordinal20.csv","nominal20.csv","ordinal25.csv","nominal25.csv","ordinal30.csv","nominal30.csv","ordinal60.csv","nominal60.csv","nominal.csv","donotuse.csv"]
for filename in filenames:

  features = []
  labels = []
                               
  f = open(filename,"r")
  for row in f:
    split = row.split(",")
    a = []
    for i in range(len(split)-1):
      a.append(split[i])
    features.append(a)
    labels.append(split[len(split)-1])
  f.close()

  features = np.array(features, dtype=np.float32)
  labels = np.array(labels, dtype=np.float32)
                               
  ml_names = ["RandomForestRegressor"]
  for clf_name in ml_names:
    clf    = eval("%s()" % clf_name)
    scores = cross_val_score(clf, features, labels,cv=5, scoring="mean_squared_error")
    score  = -scores.mean() 
    print "%15s : %s" % (filename,score)