boltthrower boltthrower - 2 months ago 25
Python Question

How to represent or shape data with >700 features for data mining?

I have a train data file that contains 0 or 1 class labels with a string containing numbers. The string is the molecular structure of the drug and class label indicates whether the drug is active.

The file looks like this: http://paste.ee/p/0G6fP

0 191 367 614 634 711 1202 1220 1311 1472 1730 2281 2572 2602 2611 2824 2855 2940 3149 3313 3560 3568 3824 4185 4266 4366 4409 4472 5008 5114 5408 5470 5509 5526 5626 5728 5910 5976 6031 6047 6069 6307 6352 6396 6401 6439 6468 6477 6708 6978 7092 7112 7149 7235 7470 7495 7549 7714 7815 7911 8037 8464 8488 8601 8650 8797 8825 8830 9015 9275 9447 9577 9707 9735 10200 10234 10328 10469 10471 10637 10749 10938 11042 11378 11713 11728 11756 11858 11950 12142 12160 12375 12383 12540 12906 13002 13121 13401 13700 14147 14332 14565 14581 14707 14944 15213 15423 15608 15677 15859 16028 16043 16092 16145 16323 16419 16564 17009 17161 17252 17361 17515 17698 17760 17791 17957 18135 18722 18889 18914 19030 19082 19105 19166 19199 19532 19716 19857 19958 20146 20153 20154 20354 20503 20582 20587 21109 21484 21543 21690 21904 21967 22009 22105 22154 22757 22808 22813 23066 23176 23361 23505 23602 23650 23868 24410 24718 24820 24869 24967 25051 25136 25174 25299 25340 25419 25568 25578 25608 25803 25930 26245 26465 26729 26795 26807 27211 27340 27750 27810 28017 28020 28070 28192 28250 28606 28671 28811 28880 29029 29061 29071 29103 29298 29350 29372 29384 29419 29432 29752 29961 30039 30237 30245 30314 30326 30433 30463 30552 30582 30748 30784 30840 30945 30965 31025 31192 31207 31225 31235 31434 31438 31487 31529 31712 31868 31893 31978 32030 32240 32360 32414 32575 32581 32957 33102 33198 33279 33283 33406 33457 33560 34085 34210 34291 34431 34630 34661 34736 34846 34955 35146 35203 35347 35567 35651 35860 35876 36005 36011 36030 36119 36281 36355 36645 36874 36913 36960 36963 36987 37095 37123 37206 37324 37376 37433 37477 37871 37876 37946 38051 38362 38385 38425 38447 38465 38909 39054 39092 39275 39419 39449 39588 39658 39684 39767 39777 39872 39943 40011 40134 40322 40554 40609 40683 40736 40786 40822 40882 41407 41410 41457 41540 41996 42011 42265 42299 42425 42474 42495 42505 42537 42711 42820 42906 43122 43324 43991 44053 44171 44316 44516 44548 44605 44665 44736 44919 45294 45711 45851 45904 45975 46040 46454 46518 46542 46667 46851 46880 46907 46918 47175 47203 47205 47246 47391 48290 48333 48486 48504 48726 48732 48806 48999 49002 49263 49357 49575 49636 49764 50038 50122 50209 50240 50322 50399 50506 50601 50710 50876 50923 51028 51066 51434 51724 51846 51951 52291 52321 52425 52659 52686 53022 53255 53266 53315 53338 53455 53760 53948 53976 54059 54103 54131 54136 54151 54161 54244 54452 54526 54746 55113 55283 55367 55424 55650 55972 56061 56114 56211 56410 56681 56725 56887 57155 57173 57180 57313 57474 57481 57506 57612 57762 57765 58149 58401 58459 58716 58832 58867 59013 59117 59340 59522 59744 59922 60085 60205 60272 60280 60489 60546 60572 60587 60778 60853 60962 61142 61214 61405 61504 61576 61607 61771 62139 62214 62419 62483 62520 62773 62905 62940 63150 63200 63466 63479 63508 63513 63685 63830 64247 64313 64356 64436 64450 64459 64461 64521 64904 65048 65142 65217 65241 65318 65518 65555 65651 65713 65750 65804 65911 66071 66081 66157 66182 66364 66531 66541 66691 66872 67050 67105 67214 67475 67582 67637 67810 67957 67986 68103 68279 68353 68500 68574 68601 68623 68796 68798 68948 69517 69646 69734 69773 69956 70071 70486 71106 71114 71425 72008 72253 72289 72311 72377 72456 72498 72601 72650 72730 72733 72822 72826 73170 73235 73315 73322 73330 73335 73473 73595 73673 73686 73821 73916 74108 74316 74773 74808 74865 75036 75220 75247 75393 75396 75399 75645 75676 75790 75823 76023 76090 76172 76370 76581 76881 76886 77050 77202 77523 77578 77648 77870 78150 78222 78353 78375 78583 78655 78802 78994 79269 79275 79507 79640 79830 79837 79897 79940 80024 80239 80265 80433 80499 80562 80839 80936 81096 81195 81301 81455 81586 81672 81952 82087 82174 82179 82225 82245 82362 82957 82961 83002 83055 83186 83192 83203 83415 83465 83741 83916 83938 84005 84062 84071 84416 84733 84737 84753 85082 85144 85199 85368 85866 86141 86353 86469 86471 86921 87061 87131 87289 87445 87539 87744 88658 88745 88767 88800 88886 89245 89248 89279 89535 89549 89785 89902 90435 90446 90528 90725 90880 90909 90954 91307 91315 91408 91828 91923 91927 91931 91996 92109 92204 92221 92278 92560 92704 92839 92929 92931 92966 92983 92988 93016 93136 93307 93539 93622 93735 93972 94210 94211 94226 94493 94583 94611 94618 94715 95145 95170 95347 95360 95371 95546 95566 95629 95646 95685 95876 95986 96422 96502 96567 96685 96769 96844 96998 97062 97204 97947 97977 98061 98190 98214 98231 98277 98402 98543 98581 98654 98831 98959 99116 99187 99257 99321 99349 99580 99678 99686 99998
0 118 307 367 478 505 512 807 878 939 1024 1095 1836 1915 1961 2261 2474 2521 2633 2673 2969 3143 3193 3292 3313 3593 3906 4073 4104 4605 4684 4720 5168 5264 5422 5456 5470 5537 5629 5895 5932 6052 6305 6319 6330 6601 6671 6891 6946 7065 7142 7260 7446 7517 7582 7609 7947 7965 7993 8015 8098 8367 8410 8490 8532 8549 8700 8837 9043 9086 9146 9247 9427 9735 10090 10141 10229 10235 10489 10614 10833 10955 11172 11238 11807 11820 11858 11989 12092 12216 12262 12533 12534 12923 13159 13306 13621 13677 13685 13824 14052 14053 14176 14179 14203 14222 14481 14600 14654 14732 14763 14782 14859 15105 15348 15956 16041 16073 16320 16490 16528 16558 16746 16835 16976 17186 17307 17528 17932 18271 18279 18393 18402 18542 19405 19413 19549 19830 19843 19845 19850 19987 19997 20179 20256 20273 20276 20282 20332 20400 20408 20425 20448 20695 20816 20821 20875 20924 21409 21493 21594 22153 22205 22300 22824 22835 22877 23081 23227 23304 23406 23682 23690 23794 23803 24022 24054 24194 24276 24543 24580 24692 24768 24837 25258 25288 25733 25785 26008 26034 26186 26274 26403 26438 26517 26600 26725 26836 26994 27076 27296 27957 28075 28161 28286 28742 29120 29135 29272 29367 29706 29708 29803 29931 30026 30098 30108 30438 30464 30690 30715 30820 30959 30965 30984 31185 31260 31262 31509 31518 31551 31719 31823 31939 32285 32375 32394 32515 32727 32737 32744 32824 33007 33083 33406 33792 33879 34708 34962 35034 35136 35350 35364 35589 35762 36350 36908 36952 37032 37116 37570 37576 37747 38154 38232 38725 38742 38966 39006 39136 39270 39438 39514 39760 40018 40078 40084 40251 40390 40576 40675 40719 40923 41644 41729 41832 42014 42053 42254 42377 42561 43040 43192 43761 43767 44037 44102 44105 44248 44321 44367 44373 44618 45206 45213 45227 45559 45676 45775 45882 45906 46011 46015 46018 46050 46685 46724 47051 47535 47590 47716 47729 47815 47843 48015 48045 48415 48496 48654 48909 48913 48916 49066 49103 49246 49320 49405 49420 49495 49718 49941 50261 50297 50363 50632 50990 51033 51179 51423 51488 51635 52087 52145 52155 52200 52281 52392 52465 52682 52711 52860 52866 53075 53090 53119 53471 53584 53745 53928 53929 53934 53944 54009 54257 54309 54405 54559 54807 54940 54945 55285 55353 55412 55542 55552 55667 55832 55858 56055 56065 56136 56336 56392 56589 56939 56964 57025 57196 57379 57537 57575 57659 57765 57800 57886 58043 58049 58143 58151 58224 58529 58549 58640 58712 58787 58812 58850 58943 58948 59073 59181 59340 59652 59831 59875 60260 60337 60387 60584 60650 60672 61132 61287 61569 61683 61737 61772 61857 61866 62015 62152 62262 62751 62866 62911 62949 62992 63392 63436 63460 63513 63610 63754 63882 63953 63980 64250 64399 64437 64590 64891 65337 65372 65396 65446 65541 65744 66040 66177 66376 66457 66482 66489 67100 67144 67304 67539 67604 67636 67674 67866 68029 68045 68053 68070 68165 68326 68351 68369 68389 68467 68496 68576 68645 68699 68908 68995 69341 69344 69442 69527 69642 69729 69887 70111 70137 70254 70324 70655 70799 70803 70921 71100 71367 71374 71494 71565 71876 72008 72025 72098 72208 72381 72453 72665 72772 73253 73283 73392 73543 73551 73795 73885 74289 74333 74385 74420 74869 74903 75369 75393 75405 75408 75635 75883 75890 75952 76425 76482 76493 76717 76889 77047 77056 77190 77491 77605 77896 77948 78159 78204 78300 79081 79388 79473 79580 79637 79816 80008 80137 80202 80303 80473 80492 80508 80583 80702 80745 80928 81333 81640 81711 81908 82161 82332 82803 82866 83277 83332 83435 83684 83745 83803 83833 83944 84233 84322 84721 84734 85144 85181 85260 85322 85328 85339 85712 85729 86042 86233 86484 86505 86524 86751 86964 87005 87036 87131 87209 87427 87545 87660 87736 87779 87973 88065 88145 88174 88302 88328 88409 88443 88450 88597 88990 89191 89204 89254 89340 89366 89409 89648 89703 89722 89809 89844 90123 90148 90197 90264 90440 90517 90548 90588 90688 90742 90851 90940 91046 91047 91342 91446 91534 91633 91737 92147 92157 92250 92269 92303 92464 92532 92661 92672 92906 93025 93056 93082 93285 93318 93558 93884 93955 94211 94228 94267 94296 94381 94393 94619 94686 94729 94736 95193 95596 95615 95629 95758 95811 95876 95980 96135 96367 96892 96942 96957 97217 97325 97533 97797 98342 98380 98521 98549 98980 99137 99171 99184 99410 99560 99610 99626 99731 99938
0 10 184 284 297 320 375 445 588 658 1108 1411 1471 1684 1787 1878 1889 1958 1986 2133 2208 2432 2460 2669 3126 3178 3700 3869 3918 3983 4127 4266 4715 4735 4948 5114 5157 5370 5467 5735 5761 5786 5952 6522 6613 6618 6938 6986 6995 7135 7297 7517 7639 7695 7762 8102 8225 8411 8433 8763 8943 9041 9058 9159 9165 9302 9452 9463 9796 9868 9880 10134 10323 10894 11004 11288 11562 11790 11881 11979 12083 12128 12354 12615 12630 12680 12725 12841 12948 13014 13213 13280 13705 13713 13850 14091 14099 14203 14219 14228 14229 14352 14380 14450 14636 14637 14871 15227 15688 15719 15832 16014 16179 16647 16689 16985 17217 17252 17533 17638 18632 18645 18662 18776 18840 19185 19267 19424 19502 19857 19943 19948 20204 20333 20447 20499 20614 20757 20819 20937 21234 21264 21418 21446 22212 22398 22505 22921 23061 23112 23223 23300 23398 23456 23682 23748 23814 23963 24282 24298 24347 24429 24446 24690 24704 24754 24918 25096 25175 25288 25310 25785 26092 26342 26463 26584 27275 27302 27479 27486 27744 27758 27829 27878 28092 28138 28223 28247 28981 28994 29041 29071 29135 29249 29272 29803 29856 29858 29904 29948 30094 30291 30297 30552 30591 30603 30765 30775 30868 31112 31183 31608 31993 32253 32416 32638 32744 33371 33389 33416 33644 33861 34011 34049 34088 34289 34531 34658 34685 34802 34990 35170 35214 35507 35538 35641 36051 36751 36818 36894 37061 37087 37181 37350 37359 37446 37473 37639 37641 37783 37846 37886 38268 38337 38423 38559 38649 38767 38782 38800 38807 38894 39426 39457 39485 39566 39613 39704 39774 40120 40179 40272 40526 40581 40653 40709 40927 40955 41025 41293 41378 41434 41448 41865 41996 41997 42220 42239 42397 42418 42451 42649 42889 42949 43032 43041 43325 43467 43629 43659 43714 43733 43773 43804 43855 44052 44064 44198 44244 44270 44422 44425 44479 44486 44549 44958 45213 45327 45559 45656 45741 45861 46015 46218 46231 46347 46406 46533 46596 46791 47142 47251 47320 47354 47358 47360 47579 47649 47739 47864 47883 47974 48025 48088 48399 48544 48659 48831 49001 49059 49515 49660 49697 49711 49828 50113 50124 50218 50858 50870 50934 51317 51319 51452 51509 51760 51833 52238 52430 52520 52873 53066 53089 53277 53415 53446 53483 53670 53745 53760 53780 53954 54011 54309 54347 54586 54611 54642 54644 54906 54912 54946 55046 55153 55174 55279 55386 55397 55613 55650 56041 56049 56217 56445 56473 56499 56712 56900 57051 57181 57501 57719 58713 58727 58753 58948 58972 59199 59216 59537 59553 59591 59730 59859 59937 60337 60384 60406 60773 60935 61246 61355 61477 61876 62031 62038 62159 62226 62850 62864 63096 63259 63316 63392 63431 63441 63717 63756 63814 63846 64200 64294 64405 64471 64616 64689 64920 65003 65135 65241 65301 65427 65534 65938 65952 65973 66059 66103 66126 66246 66274 66395 66418 66509 66567 66932 66969 67015 67175 67375 67376 67388 67599 67654 67676 67739 67795 68214 68412 68467 68512 68556 68574 68719 68813 69172 69352 69478 69767 69906 70147 70368 70425 70731 70739 70887 70967 71079 71138 71247 71382 71695 71788 72229 72265 72755 72783 72991 73028 73083 73113 73304 73586 73767 73768 73777 74059 74524 74560 74651 74765 74947 75069 75220 75504 75939 76317 76484 76571 76803 76826 77013 77256 77453 77546 77649 77789 77870 77891 77945 77981 78001 78157 78840 78998 79482 79864 79869 79920 80092 80104 80113 80200 80256 80376 80543 80592 80767 80897 81142 81261 81281 81381 81566 81690 82258 82517 82533 82538 82641 82684 82839 82871 83189 83427 83435 83620 83821 83914 84352 84516 84528 84530 84574 84879 85158 85378 85390 85517 85867 86106 86197 86207 86271 86306 86516 86818 87149 87207 87293 87385 87496 87662 87686 87744 87769 87775 87927 87939 88153 88174 88745 88767 88901 88946 88957 88990 88993 89106 89130 89283 89652 89872 90028 90123 90138 90220 90237 90349 90441 90446 90487 90818 91086 91160 91188 91237 91353 91593 91684 91737 91810 91943 92204 92346 92350 92381 92515 92779 92814 93085 93226 93357 93440 93531 94009 94026 94120 94173 94240 94518 94696 94757 94770 94852 94931 94979 95021 95130 95371 95758 95877 96172 96268 96271 96409 96427 96441 96480 96536 96593 96741 96815 96852 96886 96959 97018 97215 97385 97398 97848 97877 97889 98260 98268 98452 98676 98756 98801 98808 98928 99025 99104 99220 99606 99628 99801
0 87 149 433 704 711 892 988 1056 1070 1234 1246 1289 1642 1669 1861 1924 1956 2081 2150 2909 3038 3070 3082 3589 3708 3709 3713 4011 4266 4404 4489 4534 4674 4688 5114 5133 5190 5253 5815 6114 6645 6750 6767 6862 6880 6960 6986 7028 7080 7112 7262 7426 7492 7494 7522 7614 8100 8258 8581 8631 8799 8824 8872 8958 9011 9146 9197 9202 9247 9249 9300 9324 9353 9391 9392 9669 10234 10314 10323 10341 10455 10471 10764 10811 10871 10938 10973 11210 11277 11317 11331 11470 11581 11588 11670 11820 12199 12250 12274 12372 12425 12471 12504 12505 12540 12575 12764 12801 13424 13457 13561 13587 13650 13700 13832 13873 13916 13974 14044 14203 14246 14386 14454 14676 14942 14952 15372 15555 15570 15938 16176 16233 16268 16274 16419 16765 16820 17236 17260 17287 17307 17319 17324 17369 17674 17714 17749 18091 18154 18327 18630 18957 19072 19395 19943 19962 20179 20355 20728 20807 20850 20958 21068 21424 21890 22029 22165 22314 22316 22548 22620 22764 22820 23018 23197 23326 23671 23707 24003 24178 24205 24258 24324 24347 24401 24405 24569 24820 24939 25172 25352 25541 25783 25952 26022 26376 26523 26764 26971 27111 27296 27330 27345 27414 27471 27491 27900 27961 27982 28070 28110 28115 28187 28250 28304 28366 28467 29026 29067 29100 29159 29169 29409 29483 29592 29601 30091 30201 30275 30315 30570 31499 31620 31713 31763 31779 32053 32072 32098 32167 32186 32199 32209 32287 32360 32378 32472 32531 32623 32648 32687 32783 32925 33298 33367 33406 33451 33767 33789 33814 33879 33930 34020 34173 34355 34633 34805 34830 35082 35615 35705 35975 36258 36295 36435 36605 36732 36931 37155 37242 37263 37347 37420 37431 37496 37589 37627 37824 38249 38385 38481 38551 38715 38752 38915 39157 39281 39426 39466 39474 39488 39854 39920 39974 40094 40169 40264 40530 40635 41160 41227 41237 41376 41807 41828 41989 42426 42497 42692 42790 43046 43078 43159 43387 43427 43437 43531 43550 43579 43712 43745 43754 44029 44044 44157 44319 44338 44462 44716 44750 44762 44948 44994 45072 45332 45372 45402 45407 45438 45640 45722 45730 45770 45881 4595


Each string has a different number of segments (sequence of numbers).
I need to do some feature reduction on this training set possibly using RandomForests or another approach.
I'm unclear on how I should represent this data so that I can work on it and pass it to a model in scikit-learn. I tried putting it into a dataframe in Python but then that leads to a "jagged" dataframe which is hard to work with. I also need to calculate Variance Threshold.

Any suggestions on how to use this file?

Answer

You need to vectorize your data so that you have a square matrix with one column for each possible value. You can do this using a CountVectorizer (this is usually used for processing text but it will work for your data as well). The output will be a sparse matrix, depending on the model that you want to use, you may have to convert this to a dense array using np.array

from sklearn.feature_extraction.text import CountVectorizer
vec = CountVectorizer(binary=True, vocabulary = [str(i) for i in range(100000)])
X = vec.fit_transform(df[1])
X
# <162x56905 sparse matrix of type '<class 'numpy.int64'>'
#   with 147915 stored elements in Compressed Sparse Row format>
X.toarray()
# array([[0, 0, 0, ..., 0, 1, 0],
#        [0, 0, 0, ..., 0, 0, 0],
#        [0, 0, 0, ..., 0, 0, 0],
#        ...,
#        [0, 0, 0, ..., 0, 0, 0],
#        [0, 0, 0, ..., 0, 0, 0],
#        [0, 0, 0, ..., 0, 0, 0]])
Comments