【发布时间】:2014-04-02 18:50:37
【问题描述】:
当我努力学习这些概念时,我将为此付出最大的努力!我正在尝试在逻辑回归中使用一些排名数据。我想使用机器学习来制作一个简单的分类器来判断网页是否“好”。这只是一个学习练习,所以我不期望有很好的结果;只是希望学习“过程”和编码技术。
我已将数据放入 .csv 中,如下所示:
URL WebsiteText AlexaRank GooglePageRank
在我的测试 CSV 中我们有:
URL WebsiteText AlexaRank GooglePageRank Label
标签是一个二进制分类,用 1 表示“好”或用 0 表示“坏”。
我目前仅使用网站文本运行我的 LR;我在上面运行 TF-IDF。
我有两个问题需要帮助。我将对这个问题给予最大的赏金并将其授予最佳答案,因为这是我需要一些好的帮助,所以我和其他人可以学习。
- 如何标准化我的 AlexaRank 排名数据?我有一套
10,000 个网页,我拥有所有这些网页的 Alexa 排名;
但是他们没有排名
1-10,000。他们被排除在外 整个互联网,所以虽然http://www.google.com可能排名#1,http://www.notasite.com可能排名#83904803289480。我如何能 在 Scikit 学习中对此进行规范化,以获得最佳效果 我的数据结果? -
我正在以这种方式运行我的逻辑回归;我几乎可以肯定我做错了。我正在尝试对网站文本进行 TF-IDF,然后添加另外两个相关列并拟合逻辑回归。如果有人能快速验证我是否正确地接受了我想在我的 LR 中使用的三列,我将不胜感激。任何和所有关于我如何提高自己的反馈也将在这里受到赞赏。
loadData = lambda f: np.genfromtxt(open(f,'r'), delimiter=' ') print "loading data.." traindata = list(np.array(p.read_table('train.tsv'))[:,2])#Reading WebsiteText column for TF-IDF. testdata = list(np.array(p.read_table('test.tsv'))[:,2]) y = np.array(p.read_table('train.tsv'))[:,-1] #reading label tfv = TfidfVectorizer(min_df=3, max_features=None, strip_accents='unicode', analyzer='word', token_pattern=r'\w{1,}', ngram_range=(1, 2), use_idf=1, smooth_idf=1,sublinear_tf=1) rd = lm.LogisticRegression(penalty='l2', dual=True, tol=0.0001, C=1, fit_intercept=True, intercept_scaling=1.0, class_weight=None, random_state=None) X_all = traindata + testdata lentrain = len(traindata) print "fitting pipeline" tfv.fit(X_all) print "transforming data" X_all = tfv.transform(X_all) X = X_all[:lentrain] X_test = X_all[lentrain:] print "20 Fold CV Score: ", np.mean(cross_validation.cross_val_score(rd, X, y, cv=20, scoring='roc_auc')) #Add Two Integer Columns AlexaAndGoogleTrainData = list(np.array(p.read_table('train.tsv'))[2:,3])#Not sure if I am doing this correctly. Expecting it to contain AlexaRank and GooglePageRank columns. AlexaAndGoogleTestData = list(np.array(p.read_table('test.tsv'))[2:,3]) AllAlexaAndGoogleInfo = AlexaAndGoogleTestData + AlexaAndGoogleTrainData #Add two columns to X. X = np.append(X, AllAlexaAndGoogleInfo, 1) #Think I have done this incorrectly. print "training on full data" rd.fit(X,y) pred = rd.predict_proba(X_test)[:,1] testfile = p.read_csv('test.tsv', sep="\t", na_values=['?'], index_col=1) pred_df = p.DataFrame(pred, index=testfile.index, columns=['label']) pred_df.to_csv('benchmark.csv') print "submission file created.."`
非常感谢您的所有反馈 - 如果您需要任何进一步的信息,请发布!
【问题讨论】:
-
只取排名的日志。这将其降低到了术语频率特征的典型范围,并且它在数值上比均值中心更稳定。之后您仍然可以标准化/标准化。
-
您的火车文件中没有标签列?错字?
标签: python algorithm machine-learning artificial-intelligence scikit-learn