Kaggle竞赛题目之——Predicting a Biological Response

Predict a biological response of molecules from their chemical properties

从分子的化学属性中预测其生物反应。

The objective of the competition is to help us build as good a model as possible so that we can, as optimally as this data allows, relate molecular information, to an actual biological response.

We have shared the data in the comma separated values (CSV) format. Each row in this data set represents a molecule. The first column contains experimental data describing an actual biological response; the molecule was seen to elicit this response (1), or
not (0). The remaining columns represent molecular descriptors (d1 through d1776), these are calculated properties that can capture some of the characteristics of the molecule - for example size, shape, or elemental constitution. The descriptor matrix has
been normalized.

简述:给定CSV文件,每行代表一个分子。第一列代表真实的生物反应,有反应(1),无反应(0)。第2列到第1777列代表分子的属性,例如,大小、形状或元素等。

这个题目的比赛早就结束了,但是仍然可以提交5次结果,查看自己的得分排名。只要提交一个csv格式的结果文件就可以了。

看到0、1,可以确定这是一个二分类问题。

对于这样一个二分类,多属性的问题,首先想到用逻辑回归来试一下。

下面是使用Logistic Regression做预测的python代码:

#!/usr/bin/env python
#coding:utf-8
'''
Created on 2014年11月24日
@author: zhaohf
'''
from sklearn.linear_model import LogisticRegression
from numpy import genfromtxt,savetxt
def main():
    dataset = genfromtxt(open('../Data/train.csv','r'),delimiter=',',dtype='f8')[1:]
    test = genfromtxt(open('../Data/test.csv','r'),delimiter=',',dtype='f8')[1:]
    target = [x[0] for x in dataset]
    train = [x[1:] for x in dataset]
    lr = LogisticRegression()
    lr.fit(train, target)
    predicted_probs = [[index+1,x[1]] for index,x in enumerate(lr.predict_proba(test))]
    savetxt('../Submissions/lr_benchmark.csv',predicted_probs,delimiter=',',fmt='%d,%f',header='Molecule,PredictedProbability',comments='')

if __name__ == '__main__':
    main()

通过损失函数检验,最后的public score是0.59425,这算是一个非常差的分数了。排名数百名开外。

下面使用SVM来试一下。代码非常相似。

#!/usr/bin/env python
#coding:utf-8
'''
Created on 2014年11月24日
@author: zhaohf
'''
from sklearn import svm
from numpy import genfromtxt,savetxt
def main():
    dataset = genfromtxt(open('../Data/train.csv','r'),delimiter=',',dtype='f8')[1:]
    test = genfromtxt(open('../Data/test.csv','r'),delimiter=',',dtype='f8')[1:]
    target = [x[0] for x in dataset]
    train = [x[1:] for x in dataset]
    svc = svm.SVC(probability=True)
    svc.fit(train,target)
    predicted_probs = [[index+1,x[1]] for index,x in enumerate(svc.predict_proba(test))]
    savetxt('../Submissions/svm_benchmark.csv',predicted_probs,delimiter=',',fmt='%d,%f',header='MoleculeId,PredictedProbability',comments='')

if __name__ == '__main__':
    main()

SVM的得分是0.52553。比起LR略好。

排行榜上做到最好的分数是0.37356,要想参加比赛取得成绩还是要做些努力的。

时间: 2024-08-28 22:48:05

Kaggle竞赛题目之——Predicting a Biological Response的相关文章

Kaggle竞赛题目之——Digit Recognizer

Classify handwritten digits using the famous MNIST data This competition is the first in a series of tutorial competitions designed to introduce people to Machine Learning. The goal in this competition is to take an image of a handwritten single digi

Kaggle竞赛题目之——Titanic: Machine Learning from Disaster

The sinking of the RMS Titanic is one of the most infamous shipwrecks in history.  On April 15, 1912, during her maiden voyage, the Titanic sank after colliding with an iceberg, killing 1502 out of 2224 passengers and crew. This sensational tragedy s

C语言的很吊的printf-----来自一个C语言竞赛题目

一个C语言竞赛题目: 1 #include <stdio.h> 2 int main() 3 { 4 const int unix=1; 5 printf(&unix["\021%six\012\0"], (unix)["have"] + "fun" - 0x60); 6 return 0; 7 } 输出: unix 知识点 :1. \012 是一个字节对应 回车2. printf("%c",2["

数学建模竞赛题目

建模意义 思考方法 数学建模是一种数学的思考方法,是运用数学的语言和方法,通过抽象.简化建立能近似刻画并"解决"实际问题的一种强有力的数学手段. 数学建模就是用数学语言描述实际现象的过程.这里的实际现象既包涵具体的自然现象比如自由落体现象,也包含抽象的现象比如顾客对某种商品所取的价值倾向.这里的描述不但包括外在形态,内在机制的描述,也包括预测,试验和解释实际现象等内容. 我们也可以这样直观地理解这个概念:数学建模是一个让纯粹数学家(指只研究数学而不管数学在实际中的应用的数学家)变成物理

《Python机器学习及实践:从零开始通往Kaggle竞赛之路》

<Python 机器学习及实践–从零开始通往kaggle竞赛之路>很基础 主要介绍了Scikit-learn,顺带介绍了pandas.numpy.matplotlib.scipy. 本书代码基于python2.x.不过大部分可以通过修改print()来适应python3.5.x. 提供的代码默认使用 Jupyter Notebook,建议安装Anaconda3. 最好是到https://www.kaggle.com注册账号后,运行下第四章的代码,感受下. 监督学习: 2.1.1分类学习(Cla

《机器学习及实践--从零开始通往Kaggle竞赛之路》

<机器学习及实践--从零开始通往Kaggle竞赛之路> 在开始说之前一个很重要的Tip:电脑至少要求是64位的,这是我的痛. 断断续续花了个把月的时间把这本书过了一遍.这是一本非常适合基于python入门的机器学习入门的书籍,全书通俗易懂且有代码提供.书中源代码连接为Ipython环境.主页君使用的是pycharm,python2.7,具体安转过程书本写的很详细.码完书中代码,有一点点点小不符(或许可能是因为平台不一样),百度基本可以解决问题(有问题也可以留言探讨).贴一点代码,以示学习: 1

由Kaggle竞赛wiki文章流量预测引发的pandas内存优化过程分享

pandas内存优化分享 缘由 最近在做Kaggle上的wiki文章流量预测项目,这里由于个人电脑配置问题,我一直都是用的Kaggle的kernel,但是我们知道kernel的内存限制是16G,如下: 在处理数据过程中发现会超出,虽然我们都知道对于大数据的处理有诸如spark等分布式处理框架,但是依然存在下面的问题: 对于个人来说,没有足够的资源让这些框架发挥其优势: 从处理数据的库丰富程度上,还是pandas等更具有优势: 很多时候并不是pandas无法处理,只是数据未经优化: 所以这里还是考

Kaggle竞赛丨入门手写数字识别之KNN、CNN、降维

引言 这段时间来,看了西瓜书.蓝皮书,各种机器学习算法都有所了解,但在实践方面却缺乏相应的锻炼.于是我决定通过Kaggle这个平台来提升一下自己的应用能力,培养自己的数据分析能力. 我个人的计划是先从简单的数据集入手如手写数字识别.泰坦尼克号.房价预测,这些目前已经有丰富且成熟的方案可以参考,之后关注未来就业的方向如计算广告.点击率预测,有合适的时机,再与小伙伴一同参加线上比赛. 数据集 介绍 MNIST ("Modified National Institute of Standards an

Python机器学习及实践+从零开始通往Kaggle竞赛之路

内容简介 本书面向所有对机器学习与数据挖掘的实践及竞赛感兴趣的读者,从零开始,以Python编程语言为基础,在不涉及大量数学模型与复杂编程知识的前提下,逐步带领读者熟悉并且掌握当下最流行的机器学习.数据挖掘与自然语言处理工具,如Scikitlearn.NLTK.Pandas.gensim.XGBoost.Google Tensorflow等. 全书共分4章.第1章简介篇,介绍机器学习概念与Python编程知识:第2章基础篇,讲述如何使用Scikitlearn作为基础机器学习工具:第3章进阶篇