Classifying Cancer Types Using Gene Expression RNA-Seq Data¶


embed-resources: true echo: false warning: false message: false¶

Introduction¶

Cancer detection and classification are important challenges in modern healthcare, as early and accurate diagnosis can significantly improve patient outcomes and treatment decisions. Advances in next-generation sequencing technologies such as RNA-Seq have made it possible to measure gene expression levels across thousands of genes, providing detailed biological information that may help distinguish between different cancer types. As these technologies become more affordable and accessible, biotechnology companies are increasingly interested in using machine learning models to analyze genetic data and support cancer detection and classification. This report investigates whether machine learning models can effectively classify cancer types using gene expression RNA-Seq data collected from cancer tissue samples as part of a proof-of-concept project for a biotechnology startup exploring the development of a universal cancer detection system. The dataset contains gene expression measurements for multiple cancer types, including breast, prostate, kidney, lung, and colon cancers, and the goal is to develop a model that accurately predicts cancer classification based on gene expression patterns while demonstrating the potential usefulness of machine learning methods in genomic cancer analysis.

Methods¶

In [1]:
# imports
import pandas as pd
import numpy as np
from joblib import dump
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score,precision_score,recall_score
from sklearn.ensemble import RandomForestClassifier
from sklearn.impute import SimpleImputer
from sklearn.pipeline import Pipeline
from sklearn.metrics import confusion_matrix

Data¶

In [2]:
# load data
genetics = pd.read_csv(
    "genetics-data.csv",
)
In [3]:
# split data
genetics_train, genetics_test = train_test_split(
    genetics,
    test_size=0.20,
    stratify=genetics["cancer"],
    random_state=307,
)

The dataset contains gene expression information collected from cancer tissue samples. Each observation represents a single patient sample and includes the following variables:

Category Variable Type Description
Response cancer object Clinically determined cancer type classification. One of: BRCA (Breast Invasive Carcinoma), PRAD (Prostate Adenocarcinoma), KIRC (Kidney Renal Clear Cell Carcinoma), LUAD (Lung Adenocarcinoma), or COAD (Colon Adenocarcinoma).
Features gene_#### float64 Gene expression quantification for gene number #### in the dataset as measured by an Illumina HiSeq RNA-Seq platform.

Shape of the dataset:

In [4]:
# summary statistics
genetics_train.shape
Out[4]:
(640, 4001)

Number of each cancer type:

In [5]:
genetics_train[["cancer"]].value_counts()
Out[5]:
cancer
BRCA      240
KIRC      116
LUAD      113
PRAD      109
COAD       62
Name: count, dtype: int64

My summary statistics show that the training dataset contains 640 observations and 4000 features, including the response variable and thousands of gene expression features. I also examined the distribution of cancer types within the dataset and found that BRCA is the most common cancer classification with 240 observations, while COAD is the least common with 62 observations. The remaining cancer types, including KIRC, LUAD, and PRAD, appear in moderate amounts throughout the dataset. Although the classes are not perfectly balanced, each cancer type is still represented by a meaningful number of observations, which helps support machine learning model development and evaluation. The large number of numerical gene expression variables suggests that the dataset contains substantial biological information that may help distinguish between different cancer classifications.

In [6]:
#| fig-cap: "Figure 1. Number of Samples by Cancer Type in the Data"
# exploratory visualization
cancer_counts = genetics_train["cancer"].value_counts()

cancer_counts.plot(kind="bar")

plt.xlabel("Cancer Type")
plt.ylabel("Number of Samples")
plt.title("Number of Samples by Cancer Type")

plt.xticks(rotation=0)

plt.show()
No description has been provided for this image

Models¶

In [7]:
# process data for ML
X_train = genetics_train.drop("cancer",axis=1,)
y_train = genetics_train["cancer"]

X_test = genetics_test.drop("cancer",axis=1,)
y_test = genetics_test["cancer"]
In [8]:
# train model
model = Pipeline(
    [
        (
            "imputer",
            SimpleImputer(
                strategy="median",
            ),
        ),
        (
            "model",
            RandomForestClassifier(
                n_estimators=700,
                max_depth=None,
                min_samples_leaf=1,
                max_features="sqrt",
                random_state=307,
                n_jobs=-1,
            ),
        ),
    ]
)

model.fit(X_train, y_train)
Out[8]:
Pipeline(steps=[('imputer', SimpleImputer(strategy='median')),
                ('model',
                 RandomForestClassifier(n_estimators=700, n_jobs=-1,
                                        random_state=307))])
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
Parameters
steps steps: list of tuples

List of (name of step, estimator) tuples that are to be chained in
sequential order. To be compatible with the scikit-learn API, all steps
must define `fit`. All non-last steps must also define `transform`. See
:ref:`Combining Estimators <combining_estimators>` for more details.
[('imputer', ...), ('model', ...)]
transform_input transform_input: list of str, default=None

The names of the :term:`metadata` parameters that should be transformed by the
pipeline before passing it to the step consuming it.

This enables transforming some input arguments to ``fit`` (other than ``X``)
to be transformed by the steps of the pipeline up to the step which requires
them. Requirement is defined via :ref:`metadata routing <metadata_routing>`.
For instance, this can be used to pass a validation set through the pipeline.

You can only set this if metadata routing is enabled, which you
can enable using ``sklearn.set_config(enable_metadata_routing=True)``.

.. versionadded:: 1.6
None
memory memory: str or object with the joblib.Memory interface, default=None

Used to cache the fitted transformers of the pipeline. The last step
will never be cached, even if it is a transformer. By default, no
caching is performed. If a string is given, it is the path to the
caching directory. Enabling caching triggers a clone of the transformers
before fitting. Therefore, the transformer instance given to the
pipeline cannot be inspected directly. Use the attribute ``named_steps``
or ``steps`` to inspect estimators within the pipeline. Caching the
transformers is advantageous when fitting is time consuming. See
:ref:`sphx_glr_auto_examples_neighbors_plot_caching_nearest_neighbors.py`
for an example on how to enable caching.
None
verbose verbose: bool, default=False

If True, the time elapsed while fitting each step will be printed as it
is completed.
False
Fitted attributes
Name Type Value
classes_ classes_: ndarray of shape (n_classes,)

The classes labels. Only exist if the last step of the pipeline is a
classifier.
ndarray[object](5,) ['BRCA','COAD','KIRC','LUAD','PRAD']
feature_names_in_ feature_names_in_: ndarray of shape (`n_features_in_`,)

Names of features seen during :term:`fit`. Only defined if the
underlying estimator exposes such an attribute when fit.

.. versionadded:: 1.0
ndarray[object](4000,) ['gene_0','gene_1','gene_2',...,'gene_3997','gene_3998','gene_3999']
n_features_in_ n_features_in_: int

Number of features seen during :term:`fit`. Only defined if the
underlying first estimator in `steps` exposes such an attribute
when fit.

.. versionadded:: 0.24
int 4000
Parameters
strategy strategy: str or Callable, default='mean'

The imputation strategy.

- If "mean", then replace missing values using the mean along
each column. Can only be used with numeric data.
- If "median", then replace missing values using the median along
each column. Can only be used with numeric data.
- If "most_frequent", then replace missing using the most frequent
value along each column. Can be used with strings or numeric data.
If there is more than one such value, only the smallest is returned.
- If "constant", then replace missing values with fill_value. Can be
used with strings or numeric data.
- If an instance of Callable, then replace missing values using the
scalar statistic returned by running the callable over a dense 1d
array containing non-missing values of each column.

.. versionadded:: 0.20
strategy="constant" for fixed value imputation.

.. versionadded:: 1.5
strategy=callable for custom value imputation.
'median'
missing_values missing_values: int, float, str, np.nan, None or pandas.NA, default=np.nan

The placeholder for the missing values. All occurrences of
`missing_values` will be imputed. For pandas' dataframes with
nullable integer dtypes with missing values, `missing_values`
can be set to either `np.nan` or `pd.NA`.
nan
fill_value fill_value: str or numerical value, default=None

When strategy == "constant", `fill_value` is used to replace all
occurrences of missing_values. For string or object data types,
`fill_value` must be a string.
If `None`, `fill_value` will be 0 when imputing numerical
data and "missing_value" for strings or object data types.
None
copy copy: bool, default=True

If True, a copy of X will be created. If False, imputation will
be done in-place whenever possible. Note that, in the following cases,
a new copy will always be made, even if `copy=False`:

- If `X` is not an array of floating values;
- If `X` is encoded as a CSR matrix;
- If `add_indicator=True`.
True
add_indicator add_indicator: bool, default=False

If True, a :class:`MissingIndicator` transform will stack onto output
of the imputer's transform. This allows a predictive estimator
to account for missingness despite imputation. If a feature has no
missing values at fit/train time, the feature won't appear on
the missing indicator even if there are missing values at
transform/test time.
False
keep_empty_features keep_empty_features: bool, default=False

If True, features that consist exclusively of missing values when
`fit` is called are returned in results when `transform` is called.
The imputed value is always `0` except when `strategy="constant"`
in which case `fill_value` will be used instead.

.. versionadded:: 1.2
False
Fitted attributes
Name Type Value
feature_names_in_ feature_names_in_: ndarray of shape (`n_features_in_`,)

Names of features seen during :term:`fit`. Defined only when `X`
has feature names that are all strings.

.. versionadded:: 1.0
ndarray[object](4000,) ['gene_0','gene_1','gene_2',...,'gene_3997','gene_3998','gene_3999']
indicator_ indicator_: :class:`~sklearn.impute.MissingIndicator`

Indicator used to add binary indicators for missing values.
`None` if `add_indicator=False`.
NoneType None
n_features_in_ n_features_in_: int

Number of features seen during :term:`fit`.

.. versionadded:: 0.24
int 4000
statistics_ statistics_: array of shape (n_features,)

The imputation fill value for each feature.
Computing statistics can result in `np.nan` values.
During :meth:`transform`, features corresponding to `np.nan`
statistics will be discarded.
ndarray[float64](4000,) [0. ,3.17,3.12,...,7.28,9.49,5.49]
4000 features
gene_0
gene_1
gene_2
gene_3
gene_4
gene_5
gene_6
gene_7
gene_8
gene_9
gene_10
gene_11
gene_12
gene_13
gene_14
gene_15
gene_16
gene_17
gene_18
gene_19
gene_20
gene_21
gene_22
gene_23
gene_24
gene_25
gene_26
gene_27
gene_28
gene_29
gene_30
gene_31
gene_32
gene_33
gene_34
gene_35
gene_36
gene_37
gene_38
gene_39
gene_40
gene_41
gene_42
gene_43
gene_44
gene_45
gene_46
gene_47
gene_48
gene_49
gene_50
gene_51
gene_52
gene_53
gene_54
gene_55
gene_56
gene_57
gene_58
gene_59
gene_60
gene_61
gene_62
gene_63
gene_64
gene_65
gene_66
gene_67
gene_68
gene_69
gene_70
gene_71
gene_72
gene_73
gene_74
gene_75
gene_76
gene_77
gene_78
gene_79
gene_80
gene_81
gene_82
gene_83
gene_84
gene_85
gene_86
gene_87
gene_88
gene_89
gene_90
gene_91
gene_92
gene_93
gene_94
gene_95
gene_96
gene_97
gene_98
gene_99
gene_100
gene_101
gene_102
gene_103
gene_104
gene_105
gene_106
gene_107
gene_108
gene_109
gene_110
gene_111
gene_112
gene_113
gene_114
gene_115
gene_116
gene_117
gene_118
gene_119
gene_120
gene_121
gene_122
gene_123
gene_124
gene_125
gene_126
gene_127
gene_128
gene_129
gene_130
gene_131
gene_132
gene_133
gene_134
gene_135
gene_136
gene_137
gene_138
gene_139
gene_140
gene_141
gene_142
gene_143
gene_144
gene_145
gene_146
gene_147
gene_148
gene_149
gene_150
gene_151
gene_152
gene_153
gene_154
gene_155
gene_156
gene_157
gene_158
gene_159
gene_160
gene_161
gene_162
gene_163
gene_164
gene_165
gene_166
gene_167
gene_168
gene_169
gene_170
gene_171
gene_172
gene_173
gene_174
gene_175
gene_176
gene_177
gene_178
gene_179
gene_180
gene_181
gene_182
gene_183
gene_184
gene_185
gene_186
gene_187
gene_188
gene_189
gene_190
gene_191
gene_192
gene_193
gene_194
gene_195
gene_196
gene_197
gene_198
gene_199
gene_200
gene_201
gene_202
gene_203
gene_204
gene_205
gene_206
gene_207
gene_208
gene_209
gene_210
gene_211
gene_212
gene_213
gene_214
gene_215
gene_216
gene_217
gene_218
gene_219
gene_220
gene_221
gene_222
gene_223
gene_224
gene_225
gene_226
gene_227
gene_228
gene_229
gene_230
gene_231
gene_232
gene_233
gene_234
gene_235
gene_236
gene_237
gene_238
gene_239
gene_240
gene_241
gene_242
gene_243
gene_244
gene_245
gene_246
gene_247
gene_248
gene_249
gene_250
gene_251
gene_252
gene_253
gene_254
gene_255
gene_256
gene_257
gene_258
gene_259
gene_260
gene_261
gene_262
gene_263
gene_264
gene_265
gene_266
gene_267
gene_268
gene_269
gene_270
gene_271
gene_272
gene_273
gene_274
gene_275
gene_276
gene_277
gene_278
gene_279
gene_280
gene_281
gene_282
gene_283
gene_284
gene_285
gene_286
gene_287
gene_288
gene_289
gene_290
gene_291
gene_292
gene_293
gene_294
gene_295
gene_296
gene_297
gene_298
gene_299
gene_300
gene_301
gene_302
gene_303
gene_304
gene_305
gene_306
gene_307
gene_308
gene_309
gene_310
gene_311
gene_312
gene_313
gene_314
gene_315
gene_316
gene_317
gene_318
gene_319
gene_320
gene_321
gene_322
gene_323
gene_324
gene_325
gene_326
gene_327
gene_328
gene_329
gene_330
gene_331
gene_332
gene_333
gene_334
gene_335
gene_336
gene_337
gene_338
gene_339
gene_340
gene_341
gene_342
gene_343
gene_344
gene_345
gene_346
gene_347
gene_348
gene_349
gene_350
gene_351
gene_352
gene_353
gene_354
gene_355
gene_356
gene_357
gene_358
gene_359
gene_360
gene_361
gene_362
gene_363
gene_364
gene_365
gene_366
gene_367
gene_368
gene_369
gene_370
gene_371
gene_372
gene_373
gene_374
gene_375
gene_376
gene_377
gene_378
gene_379
gene_380
gene_381
gene_382
gene_383
gene_384
gene_385
gene_386
gene_387
gene_388
gene_389
gene_390
gene_391
gene_392
gene_393
gene_394
gene_395
gene_396
gene_397
gene_398
gene_399
gene_400
gene_401
gene_402
gene_403
gene_404
gene_405
gene_406
gene_407
gene_408
gene_409
gene_410
gene_411
gene_412
gene_413
gene_414
gene_415
gene_416
gene_417
gene_418
gene_419
gene_420
gene_421
gene_422
gene_423
gene_424
gene_425
gene_426
gene_427
gene_428
gene_429
gene_430
gene_431
gene_432
gene_433
gene_434
gene_435
gene_436
gene_437
gene_438
gene_439
gene_440
gene_441
gene_442
gene_443
gene_444
gene_445
gene_446
gene_447
gene_448
gene_449
gene_450
gene_451
gene_452
gene_453
gene_454
gene_455
gene_456
gene_457
gene_458
gene_459
gene_460
gene_461
gene_462
gene_463
gene_464
gene_465
gene_466
gene_467
gene_468
gene_469
gene_470
gene_471
gene_472
gene_473
gene_474
gene_475
gene_476
gene_477
gene_478
gene_479
gene_480
gene_481
gene_482
gene_483
gene_484
gene_485
gene_486
gene_487
gene_488
gene_489
gene_490
gene_491
gene_492
gene_493
gene_494
gene_495
gene_496
gene_497
gene_498
gene_499
gene_500
gene_501
gene_502
gene_503
gene_504
gene_505
gene_506
gene_507
gene_508
gene_509
gene_510
gene_511
gene_512
gene_513
gene_514
gene_515
gene_516
gene_517
gene_518
gene_519
gene_520
gene_521
gene_522
gene_523
gene_524
gene_525
gene_526
gene_527
gene_528
gene_529
gene_530
gene_531
gene_532
gene_533
gene_534
gene_535
gene_536
gene_537
gene_538
gene_539
gene_540
gene_541
gene_542
gene_543
gene_544
gene_545
gene_546
gene_547
gene_548
gene_549
gene_550
gene_551
gene_552
gene_553
gene_554
gene_555
gene_556
gene_557
gene_558
gene_559
gene_560
gene_561
gene_562
gene_563
gene_564
gene_565
gene_566
gene_567
gene_568
gene_569
gene_570
gene_571
gene_572
gene_573
gene_574
gene_575
gene_576
gene_577
gene_578
gene_579
gene_580
gene_581
gene_582
gene_583
gene_584
gene_585
gene_586
gene_587
gene_588
gene_589
gene_590
gene_591
gene_592
gene_593
gene_594
gene_595
gene_596
gene_597
gene_598
gene_599
gene_600
gene_601
gene_602
gene_603
gene_604
gene_605
gene_606
gene_607
gene_608
gene_609
gene_610
gene_611
gene_612
gene_613
gene_614
gene_615
gene_616
gene_617
gene_618
gene_619
gene_620
gene_621
gene_622
gene_623
gene_624
gene_625
gene_626
gene_627
gene_628
gene_629
gene_630
gene_631
gene_632
gene_633
gene_634
gene_635
gene_636
gene_637
gene_638
gene_639
gene_640
gene_641
gene_642
gene_643
gene_644
gene_645
gene_646
gene_647
gene_648
gene_649
gene_650
gene_651
gene_652
gene_653
gene_654
gene_655
gene_656
gene_657
gene_658
gene_659
gene_660
gene_661
gene_662
gene_663
gene_664
gene_665
gene_666
gene_667
gene_668
gene_669
gene_670
gene_671
gene_672
gene_673
gene_674
gene_675
gene_676
gene_677
gene_678
gene_679
gene_680
gene_681
gene_682
gene_683
gene_684
gene_685
gene_686
gene_687
gene_688
gene_689
gene_690
gene_691
gene_692
gene_693
gene_694
gene_695
gene_696
gene_697
gene_698
gene_699
gene_700
gene_701
gene_702
gene_703
gene_704
gene_705
gene_706
gene_707
gene_708
gene_709
gene_710
gene_711
gene_712
gene_713
gene_714
gene_715
gene_716
gene_717
gene_718
gene_719
gene_720
gene_721
gene_722
gene_723
gene_724
gene_725
gene_726
gene_727
gene_728
gene_729
gene_730
gene_731
gene_732
gene_733
gene_734
gene_735
gene_736
gene_737
gene_738
gene_739
gene_740
gene_741
gene_742
gene_743
gene_744
gene_745
gene_746
gene_747
gene_748
gene_749
gene_750
gene_751
gene_752
gene_753
gene_754
gene_755
gene_756
gene_757
gene_758
gene_759
gene_760
gene_761
gene_762
gene_763
gene_764
gene_765
gene_766
gene_767
gene_768
gene_769
gene_770
gene_771
gene_772
gene_773
gene_774
gene_775
gene_776
gene_777
gene_778
gene_779
gene_780
gene_781
gene_782
gene_783
gene_784
gene_785
gene_786
gene_787
gene_788
gene_789
gene_790
gene_791
gene_792
gene_793
gene_794
gene_795
gene_796
gene_797
gene_798
gene_799
gene_800
gene_801
gene_802
gene_803
gene_804
gene_805
gene_806
gene_807
gene_808
gene_809
gene_810
gene_811
gene_812
gene_813
gene_814
gene_815
gene_816
gene_817
gene_818
gene_819
gene_820
gene_821
gene_822
gene_823
gene_824
gene_825
gene_826
gene_827
gene_828
gene_829
gene_830
gene_831
gene_832
gene_833
gene_834
gene_835
gene_836
gene_837
gene_838
gene_839
gene_840
gene_841
gene_842
gene_843
gene_844
gene_845
gene_846
gene_847
gene_848
gene_849
gene_850
gene_851
gene_852
gene_853
gene_854
gene_855
gene_856
gene_857
gene_858
gene_859
gene_860
gene_861
gene_862
gene_863
gene_864
gene_865
gene_866
gene_867
gene_868
gene_869
gene_870
gene_871
gene_872
gene_873
gene_874
gene_875
gene_876
gene_877
gene_878
gene_879
gene_880
gene_881
gene_882
gene_883
gene_884
gene_885
gene_886
gene_887
gene_888
gene_889
gene_890
gene_891
gene_892
gene_893
gene_894
gene_895
gene_896
gene_897
gene_898
gene_899
gene_900
gene_901
gene_902
gene_903
gene_904
gene_905
gene_906
gene_907
gene_908
gene_909
gene_910
gene_911
gene_912
gene_913
gene_914
gene_915
gene_916
gene_917
gene_918
gene_919
gene_920
gene_921
gene_922
gene_923
gene_924
gene_925
gene_926
gene_927
gene_928
gene_929
gene_930
gene_931
gene_932
gene_933
gene_934
gene_935
gene_936
gene_937
gene_938
gene_939
gene_940
gene_941
gene_942
gene_943
gene_944
gene_945
gene_946
gene_947
gene_948
gene_949
gene_950
gene_951
gene_952
gene_953
gene_954
gene_955
gene_956
gene_957
gene_958
gene_959
gene_960
gene_961
gene_962
gene_963
gene_964
gene_965
gene_966
gene_967
gene_968
gene_969
gene_970
gene_971
gene_972
gene_973
gene_974
gene_975
gene_976
gene_977
gene_978
gene_979
gene_980
gene_981
gene_982
gene_983
gene_984
gene_985
gene_986
gene_987
gene_988
gene_989
gene_990
gene_991
gene_992
gene_993
gene_994
gene_995
gene_996
gene_997
gene_998
gene_999
gene_1000
gene_1001
gene_1002
gene_1003
gene_1004
gene_1005
gene_1006
gene_1007
gene_1008
gene_1009
gene_1010
gene_1011
gene_1012
gene_1013
gene_1014
gene_1015
gene_1016
gene_1017
gene_1018
gene_1019
gene_1020
gene_1021
gene_1022
gene_1023
gene_1024
gene_1025
gene_1026
gene_1027
gene_1028
gene_1029
gene_1030
gene_1031
gene_1032
gene_1033
gene_1034
gene_1035
gene_1036
gene_1037
gene_1038
gene_1039
gene_1040
gene_1041
gene_1042
gene_1043
gene_1044
gene_1045
gene_1046
gene_1047
gene_1048
gene_1049
gene_1050
gene_1051
gene_1052
gene_1053
gene_1054
gene_1055
gene_1056
gene_1057
gene_1058
gene_1059
gene_1060
gene_1061
gene_1062
gene_1063
gene_1064
gene_1065
gene_1066
gene_1067
gene_1068
gene_1069
gene_1070
gene_1071
gene_1072
gene_1073
gene_1074
gene_1075
gene_1076
gene_1077
gene_1078
gene_1079
gene_1080
gene_1081
gene_1082
gene_1083
gene_1084
gene_1085
gene_1086
gene_1087
gene_1088
gene_1089
gene_1090
gene_1091
gene_1092
gene_1093
gene_1094
gene_1095
gene_1096
gene_1097
gene_1098
gene_1099
gene_1100
gene_1101
gene_1102
gene_1103
gene_1104
gene_1105
gene_1106
gene_1107
gene_1108
gene_1109
gene_1110
gene_1111
gene_1112
gene_1113
gene_1114
gene_1115
gene_1116
gene_1117
gene_1118
gene_1119
gene_1120
gene_1121
gene_1122
gene_1123
gene_1124
gene_1125
gene_1126
gene_1127
gene_1128
gene_1129
gene_1130
gene_1131
gene_1132
gene_1133
gene_1134
gene_1135
gene_1136
gene_1137
gene_1138
gene_1139
gene_1140
gene_1141
gene_1142
gene_1143
gene_1144
gene_1145
gene_1146
gene_1147
gene_1148
gene_1149
gene_1150
gene_1151
gene_1152
gene_1153
gene_1154
gene_1155
gene_1156
gene_1157
gene_1158
gene_1159
gene_1160
gene_1161
gene_1162
gene_1163
gene_1164
gene_1165
gene_1166
gene_1167
gene_1168
gene_1169
gene_1170
gene_1171
gene_1172
gene_1173
gene_1174
gene_1175
gene_1176
gene_1177
gene_1178
gene_1179
gene_1180
gene_1181
gene_1182
gene_1183
gene_1184
gene_1185
gene_1186
gene_1187
gene_1188
gene_1189
gene_1190
gene_1191
gene_1192
gene_1193
gene_1194
gene_1195
gene_1196
gene_1197
gene_1198
gene_1199
gene_1200
gene_1201
gene_1202
gene_1203
gene_1204
gene_1205
gene_1206
gene_1207
gene_1208
gene_1209
gene_1210
gene_1211
gene_1212
gene_1213
gene_1214
gene_1215
gene_1216
gene_1217
gene_1218
gene_1219
gene_1220
gene_1221
gene_1222
gene_1223
gene_1224
gene_1225
gene_1226
gene_1227
gene_1228
gene_1229
gene_1230
gene_1231
gene_1232
gene_1233
gene_1234
gene_1235
gene_1236
gene_1237
gene_1238
gene_1239
gene_1240
gene_1241
gene_1242
gene_1243
gene_1244
gene_1245
gene_1246
gene_1247
gene_1248
gene_1249
gene_1250
gene_1251
gene_1252
gene_1253
gene_1254
gene_1255
gene_1256
gene_1257
gene_1258
gene_1259
gene_1260
gene_1261
gene_1262
gene_1263
gene_1264
gene_1265
gene_1266
gene_1267
gene_1268
gene_1269
gene_1270
gene_1271
gene_1272
gene_1273
gene_1274
gene_1275
gene_1276
gene_1277
gene_1278
gene_1279
gene_1280
gene_1281
gene_1282
gene_1283
gene_1284
gene_1285
gene_1286
gene_1287
gene_1288
gene_1289
gene_1290
gene_1291
gene_1292
gene_1293
gene_1294
gene_1295
gene_1296
gene_1297
gene_1298
gene_1299
gene_1300
gene_1301
gene_1302
gene_1303
gene_1304
gene_1305
gene_1306
gene_1307
gene_1308
gene_1309
gene_1310
gene_1311
gene_1312
gene_1313
gene_1314
gene_1315
gene_1316
gene_1317
gene_1318
gene_1319
gene_1320
gene_1321
gene_1322
gene_1323
gene_1324
gene_1325
gene_1326
gene_1327
gene_1328
gene_1329
gene_1330
gene_1331
gene_1332
gene_1333
gene_1334
gene_1335
gene_1336
gene_1337
gene_1338
gene_1339
gene_1340
gene_1341
gene_1342
gene_1343
gene_1344
gene_1345
gene_1346
gene_1347
gene_1348
gene_1349
gene_1350
gene_1351
gene_1352
gene_1353
gene_1354
gene_1355
gene_1356
gene_1357
gene_1358
gene_1359
gene_1360
gene_1361
gene_1362
gene_1363
gene_1364
gene_1365
gene_1366
gene_1367
gene_1368
gene_1369
gene_1370
gene_1371
gene_1372
gene_1373
gene_1374
gene_1375
gene_1376
gene_1377
gene_1378
gene_1379
gene_1380
gene_1381
gene_1382
gene_1383
gene_1384
gene_1385
gene_1386
gene_1387
gene_1388
gene_1389
gene_1390
gene_1391
gene_1392
gene_1393
gene_1394
gene_1395
gene_1396
gene_1397
gene_1398
gene_1399
gene_1400
gene_1401
gene_1402
gene_1403
gene_1404
gene_1405
gene_1406
gene_1407
gene_1408
gene_1409
gene_1410
gene_1411
gene_1412
gene_1413
gene_1414
gene_1415
gene_1416
gene_1417
gene_1418
gene_1419
gene_1420
gene_1421
gene_1422
gene_1423
gene_1424
gene_1425
gene_1426
gene_1427
gene_1428
gene_1429
gene_1430
gene_1431
gene_1432
gene_1433
gene_1434
gene_1435
gene_1436
gene_1437
gene_1438
gene_1439
gene_1440
gene_1441
gene_1442
gene_1443
gene_1444
gene_1445
gene_1446
gene_1447
gene_1448
gene_1449
gene_1450
gene_1451
gene_1452
gene_1453
gene_1454
gene_1455
gene_1456
gene_1457
gene_1458
gene_1459
gene_1460
gene_1461
gene_1462
gene_1463
gene_1464
gene_1465
gene_1466
gene_1467
gene_1468
gene_1469
gene_1470
gene_1471
gene_1472
gene_1473
gene_1474
gene_1475
gene_1476
gene_1477
gene_1478
gene_1479
gene_1480
gene_1481
gene_1482
gene_1483
gene_1484
gene_1485
gene_1486
gene_1487
gene_1488
gene_1489
gene_1490
gene_1491
gene_1492
gene_1493
gene_1494
gene_1495
gene_1496
gene_1497
gene_1498
gene_1499
gene_1500
gene_1501
gene_1502
gene_1503
gene_1504
gene_1505
gene_1506
gene_1507
gene_1508
gene_1509
gene_1510
gene_1511
gene_1512
gene_1513
gene_1514
gene_1515
gene_1516
gene_1517
gene_1518
gene_1519
gene_1520
gene_1521
gene_1522
gene_1523
gene_1524
gene_1525
gene_1526
gene_1527
gene_1528
gene_1529
gene_1530
gene_1531
gene_1532
gene_1533
gene_1534
gene_1535
gene_1536
gene_1537
gene_1538
gene_1539
gene_1540
gene_1541
gene_1542
gene_1543
gene_1544
gene_1545
gene_1546
gene_1547
gene_1548
gene_1549
gene_1550
gene_1551
gene_1552
gene_1553
gene_1554
gene_1555
gene_1556
gene_1557
gene_1558
gene_1559
gene_1560
gene_1561
gene_1562
gene_1563
gene_1564
gene_1565
gene_1566
gene_1567
gene_1568
gene_1569
gene_1570
gene_1571
gene_1572
gene_1573
gene_1574
gene_1575
gene_1576
gene_1577
gene_1578
gene_1579
gene_1580
gene_1581
gene_1582
gene_1583
gene_1584
gene_1585
gene_1586
gene_1587
gene_1588
gene_1589
gene_1590
gene_1591
gene_1592
gene_1593
gene_1594
gene_1595
gene_1596
gene_1597
gene_1598
gene_1599
gene_1600
gene_1601
gene_1602
gene_1603
gene_1604
gene_1605
gene_1606
gene_1607
gene_1608
gene_1609
gene_1610
gene_1611
gene_1612
gene_1613
gene_1614
gene_1615
gene_1616
gene_1617
gene_1618
gene_1619
gene_1620
gene_1621
gene_1622
gene_1623
gene_1624
gene_1625
gene_1626
gene_1627
gene_1628
gene_1629
gene_1630
gene_1631
gene_1632
gene_1633
gene_1634
gene_1635
gene_1636
gene_1637
gene_1638
gene_1639
gene_1640
gene_1641
gene_1642
gene_1643
gene_1644
gene_1645
gene_1646
gene_1647
gene_1648
gene_1649
gene_1650
gene_1651
gene_1652
gene_1653
gene_1654
gene_1655
gene_1656
gene_1657
gene_1658
gene_1659
gene_1660
gene_1661
gene_1662
gene_1663
gene_1664
gene_1665
gene_1666
gene_1667
gene_1668
gene_1669
gene_1670
gene_1671
gene_1672
gene_1673
gene_1674
gene_1675
gene_1676
gene_1677
gene_1678
gene_1679
gene_1680
gene_1681
gene_1682
gene_1683
gene_1684
gene_1685
gene_1686
gene_1687
gene_1688
gene_1689
gene_1690
gene_1691
gene_1692
gene_1693
gene_1694
gene_1695
gene_1696
gene_1697
gene_1698
gene_1699
gene_1700
gene_1701
gene_1702
gene_1703
gene_1704
gene_1705
gene_1706
gene_1707
gene_1708
gene_1709
gene_1710
gene_1711
gene_1712
gene_1713
gene_1714
gene_1715
gene_1716
gene_1717
gene_1718
gene_1719
gene_1720
gene_1721
gene_1722
gene_1723
gene_1724
gene_1725
gene_1726
gene_1727
gene_1728
gene_1729
gene_1730
gene_1731
gene_1732
gene_1733
gene_1734
gene_1735
gene_1736
gene_1737
gene_1738
gene_1739
gene_1740
gene_1741
gene_1742
gene_1743
gene_1744
gene_1745
gene_1746
gene_1747
gene_1748
gene_1749
gene_1750
gene_1751
gene_1752
gene_1753
gene_1754
gene_1755
gene_1756
gene_1757
gene_1758
gene_1759
gene_1760
gene_1761
gene_1762
gene_1763
gene_1764
gene_1765
gene_1766
gene_1767
gene_1768
gene_1769
gene_1770
gene_1771
gene_1772
gene_1773
gene_1774
gene_1775
gene_1776
gene_1777
gene_1778
gene_1779
gene_1780
gene_1781
gene_1782
gene_1783
gene_1784
gene_1785
gene_1786
gene_1787
gene_1788
gene_1789
gene_1790
gene_1791
gene_1792
gene_1793
gene_1794
gene_1795
gene_1796
gene_1797
gene_1798
gene_1799
gene_1800
gene_1801
gene_1802
gene_1803
gene_1804
gene_1805
gene_1806
gene_1807
gene_1808
gene_1809
gene_1810
gene_1811
gene_1812
gene_1813
gene_1814
gene_1815
gene_1816
gene_1817
gene_1818
gene_1819
gene_1820
gene_1821
gene_1822
gene_1823
gene_1824
gene_1825
gene_1826
gene_1827
gene_1828
gene_1829
gene_1830
gene_1831
gene_1832
gene_1833
gene_1834
gene_1835
gene_1836
gene_1837
gene_1838
gene_1839
gene_1840
gene_1841
gene_1842
gene_1843
gene_1844
gene_1845
gene_1846
gene_1847
gene_1848
gene_1849
gene_1850
gene_1851
gene_1852
gene_1853
gene_1854
gene_1855
gene_1856
gene_1857
gene_1858
gene_1859
gene_1860
gene_1861
gene_1862
gene_1863
gene_1864
gene_1865
gene_1866
gene_1867
gene_1868
gene_1869
gene_1870
gene_1871
gene_1872
gene_1873
gene_1874
gene_1875
gene_1876
gene_1877
gene_1878
gene_1879
gene_1880
gene_1881
gene_1882
gene_1883
gene_1884
gene_1885
gene_1886
gene_1887
gene_1888
gene_1889
gene_1890
gene_1891
gene_1892
gene_1893
gene_1894
gene_1895
gene_1896
gene_1897
gene_1898
gene_1899
gene_1900
gene_1901
gene_1902
gene_1903
gene_1904
gene_1905
gene_1906
gene_1907
gene_1908
gene_1909
gene_1910
gene_1911
gene_1912
gene_1913
gene_1914
gene_1915
gene_1916
gene_1917
gene_1918
gene_1919
gene_1920
gene_1921
gene_1922
gene_1923
gene_1924
gene_1925
gene_1926
gene_1927
gene_1928
gene_1929
gene_1930
gene_1931
gene_1932
gene_1933
gene_1934
gene_1935
gene_1936
gene_1937
gene_1938
gene_1939
gene_1940
gene_1941
gene_1942
gene_1943
gene_1944
gene_1945
gene_1946
gene_1947
gene_1948
gene_1949
gene_1950
gene_1951
gene_1952
gene_1953
gene_1954
gene_1955
gene_1956
gene_1957
gene_1958
gene_1959
gene_1960
gene_1961
gene_1962
gene_1963
gene_1964
gene_1965
gene_1966
gene_1967
gene_1968
gene_1969
gene_1970
gene_1971
gene_1972
gene_1973
gene_1974
gene_1975
gene_1976
gene_1977
gene_1978
gene_1979
gene_1980
gene_1981
gene_1982
gene_1983
gene_1984
gene_1985
gene_1986
gene_1987
gene_1988
gene_1989
gene_1990
gene_1991
gene_1992
gene_1993
gene_1994
gene_1995
gene_1996
gene_1997
gene_1998
gene_1999
gene_2000
gene_2001
gene_2002
gene_2003
gene_2004
gene_2005
gene_2006
gene_2007
gene_2008
gene_2009
gene_2010
gene_2011
gene_2012
gene_2013
gene_2014
gene_2015
gene_2016
gene_2017
gene_2018
gene_2019
gene_2020
gene_2021
gene_2022
gene_2023
gene_2024
gene_2025
gene_2026
gene_2027
gene_2028
gene_2029
gene_2030
gene_2031
gene_2032
gene_2033
gene_2034
gene_2035
gene_2036
gene_2037
gene_2038
gene_2039
gene_2040
gene_2041
gene_2042
gene_2043
gene_2044
gene_2045
gene_2046
gene_2047
gene_2048
gene_2049
gene_2050
gene_2051
gene_2052
gene_2053
gene_2054
gene_2055
gene_2056
gene_2057
gene_2058
gene_2059
gene_2060
gene_2061
gene_2062
gene_2063
gene_2064
gene_2065
gene_2066
gene_2067
gene_2068
gene_2069
gene_2070
gene_2071
gene_2072
gene_2073
gene_2074
gene_2075
gene_2076
gene_2077
gene_2078
gene_2079
gene_2080
gene_2081
gene_2082
gene_2083
gene_2084
gene_2085
gene_2086
gene_2087
gene_2088
gene_2089
gene_2090
gene_2091
gene_2092
gene_2093
gene_2094
gene_2095
gene_2096
gene_2097
gene_2098
gene_2099
gene_2100
gene_2101
gene_2102
gene_2103
gene_2104
gene_2105
gene_2106
gene_2107
gene_2108
gene_2109
gene_2110
gene_2111
gene_2112
gene_2113
gene_2114
gene_2115
gene_2116
gene_2117
gene_2118
gene_2119
gene_2120
gene_2121
gene_2122
gene_2123
gene_2124
gene_2125
gene_2126
gene_2127
gene_2128
gene_2129
gene_2130
gene_2131
gene_2132
gene_2133
gene_2134
gene_2135
gene_2136
gene_2137
gene_2138
gene_2139
gene_2140
gene_2141
gene_2142
gene_2143
gene_2144
gene_2145
gene_2146
gene_2147
gene_2148
gene_2149
gene_2150
gene_2151
gene_2152
gene_2153
gene_2154
gene_2155
gene_2156
gene_2157
gene_2158
gene_2159
gene_2160
gene_2161
gene_2162
gene_2163
gene_2164
gene_2165
gene_2166
gene_2167
gene_2168
gene_2169
gene_2170
gene_2171
gene_2172
gene_2173
gene_2174
gene_2175
gene_2176
gene_2177
gene_2178
gene_2179
gene_2180
gene_2181
gene_2182
gene_2183
gene_2184
gene_2185
gene_2186
gene_2187
gene_2188
gene_2189
gene_2190
gene_2191
gene_2192
gene_2193
gene_2194
gene_2195
gene_2196
gene_2197
gene_2198
gene_2199
gene_2200
gene_2201
gene_2202
gene_2203
gene_2204
gene_2205
gene_2206
gene_2207
gene_2208
gene_2209
gene_2210
gene_2211
gene_2212
gene_2213
gene_2214
gene_2215
gene_2216
gene_2217
gene_2218
gene_2219
gene_2220
gene_2221
gene_2222
gene_2223
gene_2224
gene_2225
gene_2226
gene_2227
gene_2228
gene_2229
gene_2230
gene_2231
gene_2232
gene_2233
gene_2234
gene_2235
gene_2236
gene_2237
gene_2238
gene_2239
gene_2240
gene_2241
gene_2242
gene_2243
gene_2244
gene_2245
gene_2246
gene_2247
gene_2248
gene_2249
gene_2250
gene_2251
gene_2252
gene_2253
gene_2254
gene_2255
gene_2256
gene_2257
gene_2258
gene_2259
gene_2260
gene_2261
gene_2262
gene_2263
gene_2264
gene_2265
gene_2266
gene_2267
gene_2268
gene_2269
gene_2270
gene_2271
gene_2272
gene_2273
gene_2274
gene_2275
gene_2276
gene_2277
gene_2278
gene_2279
gene_2280
gene_2281
gene_2282
gene_2283
gene_2284
gene_2285
gene_2286
gene_2287
gene_2288
gene_2289
gene_2290
gene_2291
gene_2292
gene_2293
gene_2294
gene_2295
gene_2296
gene_2297
gene_2298
gene_2299
gene_2300
gene_2301
gene_2302
gene_2303
gene_2304
gene_2305
gene_2306
gene_2307
gene_2308
gene_2309
gene_2310
gene_2311
gene_2312
gene_2313
gene_2314
gene_2315
gene_2316
gene_2317
gene_2318
gene_2319
gene_2320
gene_2321
gene_2322
gene_2323
gene_2324
gene_2325
gene_2326
gene_2327
gene_2328
gene_2329
gene_2330
gene_2331
gene_2332
gene_2333
gene_2334
gene_2335
gene_2336
gene_2337
gene_2338
gene_2339
gene_2340
gene_2341
gene_2342
gene_2343
gene_2344
gene_2345
gene_2346
gene_2347
gene_2348
gene_2349
gene_2350
gene_2351
gene_2352
gene_2353
gene_2354
gene_2355
gene_2356
gene_2357
gene_2358
gene_2359
gene_2360
gene_2361
gene_2362
gene_2363
gene_2364
gene_2365
gene_2366
gene_2367
gene_2368
gene_2369
gene_2370
gene_2371
gene_2372
gene_2373
gene_2374
gene_2375
gene_2376
gene_2377
gene_2378
gene_2379
gene_2380
gene_2381
gene_2382
gene_2383
gene_2384
gene_2385
gene_2386
gene_2387
gene_2388
gene_2389
gene_2390
gene_2391
gene_2392
gene_2393
gene_2394
gene_2395
gene_2396
gene_2397
gene_2398
gene_2399
gene_2400
gene_2401
gene_2402
gene_2403
gene_2404
gene_2405
gene_2406
gene_2407
gene_2408
gene_2409
gene_2410
gene_2411
gene_2412
gene_2413
gene_2414
gene_2415
gene_2416
gene_2417
gene_2418
gene_2419
gene_2420
gene_2421
gene_2422
gene_2423
gene_2424
gene_2425
gene_2426
gene_2427
gene_2428
gene_2429
gene_2430
gene_2431
gene_2432
gene_2433
gene_2434
gene_2435
gene_2436
gene_2437
gene_2438
gene_2439
gene_2440
gene_2441
gene_2442
gene_2443
gene_2444
gene_2445
gene_2446
gene_2447
gene_2448
gene_2449
gene_2450
gene_2451
gene_2452
gene_2453
gene_2454
gene_2455
gene_2456
gene_2457
gene_2458
gene_2459
gene_2460
gene_2461
gene_2462
gene_2463
gene_2464
gene_2465
gene_2466
gene_2467
gene_2468
gene_2469
gene_2470
gene_2471
gene_2472
gene_2473
gene_2474
gene_2475
gene_2476
gene_2477
gene_2478
gene_2479
gene_2480
gene_2481
gene_2482
gene_2483
gene_2484
gene_2485
gene_2486
gene_2487
gene_2488
gene_2489
gene_2490
gene_2491
gene_2492
gene_2493
gene_2494
gene_2495
gene_2496
gene_2497
gene_2498
gene_2499
gene_2500
gene_2501
gene_2502
gene_2503
gene_2504
gene_2505
gene_2506
gene_2507
gene_2508
gene_2509
gene_2510
gene_2511
gene_2512
gene_2513
gene_2514
gene_2515
gene_2516
gene_2517
gene_2518
gene_2519
gene_2520
gene_2521
gene_2522
gene_2523
gene_2524
gene_2525
gene_2526
gene_2527
gene_2528
gene_2529
gene_2530
gene_2531
gene_2532
gene_2533
gene_2534
gene_2535
gene_2536
gene_2537
gene_2538
gene_2539
gene_2540
gene_2541
gene_2542
gene_2543
gene_2544
gene_2545
gene_2546
gene_2547
gene_2548
gene_2549
gene_2550
gene_2551
gene_2552
gene_2553
gene_2554
gene_2555
gene_2556
gene_2557
gene_2558
gene_2559
gene_2560
gene_2561
gene_2562
gene_2563
gene_2564
gene_2565
gene_2566
gene_2567
gene_2568
gene_2569
gene_2570
gene_2571
gene_2572
gene_2573
gene_2574
gene_2575
gene_2576
gene_2577
gene_2578
gene_2579
gene_2580
gene_2581
gene_2582
gene_2583
gene_2584
gene_2585
gene_2586
gene_2587
gene_2588
gene_2589
gene_2590
gene_2591
gene_2592
gene_2593
gene_2594
gene_2595
gene_2596
gene_2597
gene_2598
gene_2599
gene_2600
gene_2601
gene_2602
gene_2603
gene_2604
gene_2605
gene_2606
gene_2607
gene_2608
gene_2609
gene_2610
gene_2611
gene_2612
gene_2613
gene_2614
gene_2615
gene_2616
gene_2617
gene_2618
gene_2619
gene_2620
gene_2621
gene_2622
gene_2623
gene_2624
gene_2625
gene_2626
gene_2627
gene_2628
gene_2629
gene_2630
gene_2631
gene_2632
gene_2633
gene_2634
gene_2635
gene_2636
gene_2637
gene_2638
gene_2639
gene_2640
gene_2641
gene_2642
gene_2643
gene_2644
gene_2645
gene_2646
gene_2647
gene_2648
gene_2649
gene_2650
gene_2651
gene_2652
gene_2653
gene_2654
gene_2655
gene_2656
gene_2657
gene_2658
gene_2659
gene_2660
gene_2661
gene_2662
gene_2663
gene_2664
gene_2665
gene_2666
gene_2667
gene_2668
gene_2669
gene_2670
gene_2671
gene_2672
gene_2673
gene_2674
gene_2675
gene_2676
gene_2677
gene_2678
gene_2679
gene_2680
gene_2681
gene_2682
gene_2683
gene_2684
gene_2685
gene_2686
gene_2687
gene_2688
gene_2689
gene_2690
gene_2691
gene_2692
gene_2693
gene_2694
gene_2695
gene_2696
gene_2697
gene_2698
gene_2699
gene_2700
gene_2701
gene_2702
gene_2703
gene_2704
gene_2705
gene_2706
gene_2707
gene_2708
gene_2709
gene_2710
gene_2711
gene_2712
gene_2713
gene_2714
gene_2715
gene_2716
gene_2717
gene_2718
gene_2719
gene_2720
gene_2721
gene_2722
gene_2723
gene_2724
gene_2725
gene_2726
gene_2727
gene_2728
gene_2729
gene_2730
gene_2731
gene_2732
gene_2733
gene_2734
gene_2735
gene_2736
gene_2737
gene_2738
gene_2739
gene_2740
gene_2741
gene_2742
gene_2743
gene_2744
gene_2745
gene_2746
gene_2747
gene_2748
gene_2749
gene_2750
gene_2751
gene_2752
gene_2753
gene_2754
gene_2755
gene_2756
gene_2757
gene_2758
gene_2759
gene_2760
gene_2761
gene_2762
gene_2763
gene_2764
gene_2765
gene_2766
gene_2767
gene_2768
gene_2769
gene_2770
gene_2771
gene_2772
gene_2773
gene_2774
gene_2775
gene_2776
gene_2777
gene_2778
gene_2779
gene_2780
gene_2781
gene_2782
gene_2783
gene_2784
gene_2785
gene_2786
gene_2787
gene_2788
gene_2789
gene_2790
gene_2791
gene_2792
gene_2793
gene_2794
gene_2795
gene_2796
gene_2797
gene_2798
gene_2799
gene_2800
gene_2801
gene_2802
gene_2803
gene_2804
gene_2805
gene_2806
gene_2807
gene_2808
gene_2809
gene_2810
gene_2811
gene_2812
gene_2813
gene_2814
gene_2815
gene_2816
gene_2817
gene_2818
gene_2819
gene_2820
gene_2821
gene_2822
gene_2823
gene_2824
gene_2825
gene_2826
gene_2827
gene_2828
gene_2829
gene_2830
gene_2831
gene_2832
gene_2833
gene_2834
gene_2835
gene_2836
gene_2837
gene_2838
gene_2839
gene_2840
gene_2841
gene_2842
gene_2843
gene_2844
gene_2845
gene_2846
gene_2847
gene_2848
gene_2849
gene_2850
gene_2851
gene_2852
gene_2853
gene_2854
gene_2855
gene_2856
gene_2857
gene_2858
gene_2859
gene_2860
gene_2861
gene_2862
gene_2863
gene_2864
gene_2865
gene_2866
gene_2867
gene_2868
gene_2869
gene_2870
gene_2871
gene_2872
gene_2873
gene_2874
gene_2875
gene_2876
gene_2877
gene_2878
gene_2879
gene_2880
gene_2881
gene_2882
gene_2883
gene_2884
gene_2885
gene_2886
gene_2887
gene_2888
gene_2889
gene_2890
gene_2891
gene_2892
gene_2893
gene_2894
gene_2895
gene_2896
gene_2897
gene_2898
gene_2899
gene_2900
gene_2901
gene_2902
gene_2903
gene_2904
gene_2905
gene_2906
gene_2907
gene_2908
gene_2909
gene_2910
gene_2911
gene_2912
gene_2913
gene_2914
gene_2915
gene_2916
gene_2917
gene_2918
gene_2919
gene_2920
gene_2921
gene_2922
gene_2923
gene_2924
gene_2925
gene_2926
gene_2927
gene_2928
gene_2929
gene_2930
gene_2931
gene_2932
gene_2933
gene_2934
gene_2935
gene_2936
gene_2937
gene_2938
gene_2939
gene_2940
gene_2941
gene_2942
gene_2943
gene_2944
gene_2945
gene_2946
gene_2947
gene_2948
gene_2949
gene_2950
gene_2951
gene_2952
gene_2953
gene_2954
gene_2955
gene_2956
gene_2957
gene_2958
gene_2959
gene_2960
gene_2961
gene_2962
gene_2963
gene_2964
gene_2965
gene_2966
gene_2967
gene_2968
gene_2969
gene_2970
gene_2971
gene_2972
gene_2973
gene_2974
gene_2975
gene_2976
gene_2977
gene_2978
gene_2979
gene_2980
gene_2981
gene_2982
gene_2983
gene_2984
gene_2985
gene_2986
gene_2987
gene_2988
gene_2989
gene_2990
gene_2991
gene_2992
gene_2993
gene_2994
gene_2995
gene_2996
gene_2997
gene_2998
gene_2999
gene_3000
gene_3001
gene_3002
gene_3003
gene_3004
gene_3005
gene_3006
gene_3007
gene_3008
gene_3009
gene_3010
gene_3011
gene_3012
gene_3013
gene_3014
gene_3015
gene_3016
gene_3017
gene_3018
gene_3019
gene_3020
gene_3021
gene_3022
gene_3023
gene_3024
gene_3025
gene_3026
gene_3027
gene_3028
gene_3029
gene_3030
gene_3031
gene_3032
gene_3033
gene_3034
gene_3035
gene_3036
gene_3037
gene_3038
gene_3039
gene_3040
gene_3041
gene_3042
gene_3043
gene_3044
gene_3045
gene_3046
gene_3047
gene_3048
gene_3049
gene_3050
gene_3051
gene_3052
gene_3053
gene_3054
gene_3055
gene_3056
gene_3057
gene_3058
gene_3059
gene_3060
gene_3061
gene_3062
gene_3063
gene_3064
gene_3065
gene_3066
gene_3067
gene_3068
gene_3069
gene_3070
gene_3071
gene_3072
gene_3073
gene_3074
gene_3075
gene_3076
gene_3077
gene_3078
gene_3079
gene_3080
gene_3081
gene_3082
gene_3083
gene_3084
gene_3085
gene_3086
gene_3087
gene_3088
gene_3089
gene_3090
gene_3091
gene_3092
gene_3093
gene_3094
gene_3095
gene_3096
gene_3097
gene_3098
gene_3099
gene_3100
gene_3101
gene_3102
gene_3103
gene_3104
gene_3105
gene_3106
gene_3107
gene_3108
gene_3109
gene_3110
gene_3111
gene_3112
gene_3113
gene_3114
gene_3115
gene_3116
gene_3117
gene_3118
gene_3119
gene_3120
gene_3121
gene_3122
gene_3123
gene_3124
gene_3125
gene_3126
gene_3127
gene_3128
gene_3129
gene_3130
gene_3131
gene_3132
gene_3133
gene_3134
gene_3135
gene_3136
gene_3137
gene_3138
gene_3139
gene_3140
gene_3141
gene_3142
gene_3143
gene_3144
gene_3145
gene_3146
gene_3147
gene_3148
gene_3149
gene_3150
gene_3151
gene_3152
gene_3153
gene_3154
gene_3155
gene_3156
gene_3157
gene_3158
gene_3159
gene_3160
gene_3161
gene_3162
gene_3163
gene_3164
gene_3165
gene_3166
gene_3167
gene_3168
gene_3169
gene_3170
gene_3171
gene_3172
gene_3173
gene_3174
gene_3175
gene_3176
gene_3177
gene_3178
gene_3179
gene_3180
gene_3181
gene_3182
gene_3183
gene_3184
gene_3185
gene_3186
gene_3187
gene_3188
gene_3189
gene_3190
gene_3191
gene_3192
gene_3193
gene_3194
gene_3195
gene_3196
gene_3197
gene_3198
gene_3199
gene_3200
gene_3201
gene_3202
gene_3203
gene_3204
gene_3205
gene_3206
gene_3207
gene_3208
gene_3209
gene_3210
gene_3211
gene_3212
gene_3213
gene_3214
gene_3215
gene_3216
gene_3217
gene_3218
gene_3219
gene_3220
gene_3221
gene_3222
gene_3223
gene_3224
gene_3225
gene_3226
gene_3227
gene_3228
gene_3229
gene_3230
gene_3231
gene_3232
gene_3233
gene_3234
gene_3235
gene_3236
gene_3237
gene_3238
gene_3239
gene_3240
gene_3241
gene_3242
gene_3243
gene_3244
gene_3245
gene_3246
gene_3247
gene_3248
gene_3249
gene_3250
gene_3251
gene_3252
gene_3253
gene_3254
gene_3255
gene_3256
gene_3257
gene_3258
gene_3259
gene_3260
gene_3261
gene_3262
gene_3263
gene_3264
gene_3265
gene_3266
gene_3267
gene_3268
gene_3269
gene_3270
gene_3271
gene_3272
gene_3273
gene_3274
gene_3275
gene_3276
gene_3277
gene_3278
gene_3279
gene_3280
gene_3281
gene_3282
gene_3283
gene_3284
gene_3285
gene_3286
gene_3287
gene_3288
gene_3289
gene_3290
gene_3291
gene_3292
gene_3293
gene_3294
gene_3295
gene_3296
gene_3297
gene_3298
gene_3299
gene_3300
gene_3301
gene_3302
gene_3303
gene_3304
gene_3305
gene_3306
gene_3307
gene_3308
gene_3309
gene_3310
gene_3311
gene_3312
gene_3313
gene_3314
gene_3315
gene_3316
gene_3317
gene_3318
gene_3319
gene_3320
gene_3321
gene_3322
gene_3323
gene_3324
gene_3325
gene_3326
gene_3327
gene_3328
gene_3329
gene_3330
gene_3331
gene_3332
gene_3333
gene_3334
gene_3335
gene_3336
gene_3337
gene_3338
gene_3339
gene_3340
gene_3341
gene_3342
gene_3343
gene_3344
gene_3345
gene_3346
gene_3347
gene_3348
gene_3349
gene_3350
gene_3351
gene_3352
gene_3353
gene_3354
gene_3355
gene_3356
gene_3357
gene_3358
gene_3359
gene_3360
gene_3361
gene_3362
gene_3363
gene_3364
gene_3365
gene_3366
gene_3367
gene_3368
gene_3369
gene_3370
gene_3371
gene_3372
gene_3373
gene_3374
gene_3375
gene_3376
gene_3377
gene_3378
gene_3379
gene_3380
gene_3381
gene_3382
gene_3383
gene_3384
gene_3385
gene_3386
gene_3387
gene_3388
gene_3389
gene_3390
gene_3391
gene_3392
gene_3393
gene_3394
gene_3395
gene_3396
gene_3397
gene_3398
gene_3399
gene_3400
gene_3401
gene_3402
gene_3403
gene_3404
gene_3405
gene_3406
gene_3407
gene_3408
gene_3409
gene_3410
gene_3411
gene_3412
gene_3413
gene_3414
gene_3415
gene_3416
gene_3417
gene_3418
gene_3419
gene_3420
gene_3421
gene_3422
gene_3423
gene_3424
gene_3425
gene_3426
gene_3427
gene_3428
gene_3429
gene_3430
gene_3431
gene_3432
gene_3433
gene_3434
gene_3435
gene_3436
gene_3437
gene_3438
gene_3439
gene_3440
gene_3441
gene_3442
gene_3443
gene_3444
gene_3445
gene_3446
gene_3447
gene_3448
gene_3449
gene_3450
gene_3451
gene_3452
gene_3453
gene_3454
gene_3455
gene_3456
gene_3457
gene_3458
gene_3459
gene_3460
gene_3461
gene_3462
gene_3463
gene_3464
gene_3465
gene_3466
gene_3467
gene_3468
gene_3469
gene_3470
gene_3471
gene_3472
gene_3473
gene_3474
gene_3475
gene_3476
gene_3477
gene_3478
gene_3479
gene_3480
gene_3481
gene_3482
gene_3483
gene_3484
gene_3485
gene_3486
gene_3487
gene_3488
gene_3489
gene_3490
gene_3491
gene_3492
gene_3493
gene_3494
gene_3495
gene_3496
gene_3497
gene_3498
gene_3499
gene_3500
gene_3501
gene_3502
gene_3503
gene_3504
gene_3505
gene_3506
gene_3507
gene_3508
gene_3509
gene_3510
gene_3511
gene_3512
gene_3513
gene_3514
gene_3515
gene_3516
gene_3517
gene_3518
gene_3519
gene_3520
gene_3521
gene_3522
gene_3523
gene_3524
gene_3525
gene_3526
gene_3527
gene_3528
gene_3529
gene_3530
gene_3531
gene_3532
gene_3533
gene_3534
gene_3535
gene_3536
gene_3537
gene_3538
gene_3539
gene_3540
gene_3541
gene_3542
gene_3543
gene_3544
gene_3545
gene_3546
gene_3547
gene_3548
gene_3549
gene_3550
gene_3551
gene_3552
gene_3553
gene_3554
gene_3555
gene_3556
gene_3557
gene_3558
gene_3559
gene_3560
gene_3561
gene_3562
gene_3563
gene_3564
gene_3565
gene_3566
gene_3567
gene_3568
gene_3569
gene_3570
gene_3571
gene_3572
gene_3573
gene_3574
gene_3575
gene_3576
gene_3577
gene_3578
gene_3579
gene_3580
gene_3581
gene_3582
gene_3583
gene_3584
gene_3585
gene_3586
gene_3587
gene_3588
gene_3589
gene_3590
gene_3591
gene_3592
gene_3593
gene_3594
gene_3595
gene_3596
gene_3597
gene_3598
gene_3599
gene_3600
gene_3601
gene_3602
gene_3603
gene_3604
gene_3605
gene_3606
gene_3607
gene_3608
gene_3609
gene_3610
gene_3611
gene_3612
gene_3613
gene_3614
gene_3615
gene_3616
gene_3617
gene_3618
gene_3619
gene_3620
gene_3621
gene_3622
gene_3623
gene_3624
gene_3625
gene_3626
gene_3627
gene_3628
gene_3629
gene_3630
gene_3631
gene_3632
gene_3633
gene_3634
gene_3635
gene_3636
gene_3637
gene_3638
gene_3639
gene_3640
gene_3641
gene_3642
gene_3643
gene_3644
gene_3645
gene_3646
gene_3647
gene_3648
gene_3649
gene_3650
gene_3651
gene_3652
gene_3653
gene_3654
gene_3655
gene_3656
gene_3657
gene_3658
gene_3659
gene_3660
gene_3661
gene_3662
gene_3663
gene_3664
gene_3665
gene_3666
gene_3667
gene_3668
gene_3669
gene_3670
gene_3671
gene_3672
gene_3673
gene_3674
gene_3675
gene_3676
gene_3677
gene_3678
gene_3679
gene_3680
gene_3681
gene_3682
gene_3683
gene_3684
gene_3685
gene_3686
gene_3687
gene_3688
gene_3689
gene_3690
gene_3691
gene_3692
gene_3693
gene_3694
gene_3695
gene_3696
gene_3697
gene_3698
gene_3699
gene_3700
gene_3701
gene_3702
gene_3703
gene_3704
gene_3705
gene_3706
gene_3707
gene_3708
gene_3709
gene_3710
gene_3711
gene_3712
gene_3713
gene_3714
gene_3715
gene_3716
gene_3717
gene_3718
gene_3719
gene_3720
gene_3721
gene_3722
gene_3723
gene_3724
gene_3725
gene_3726
gene_3727
gene_3728
gene_3729
gene_3730
gene_3731
gene_3732
gene_3733
gene_3734
gene_3735
gene_3736
gene_3737
gene_3738
gene_3739
gene_3740
gene_3741
gene_3742
gene_3743
gene_3744
gene_3745
gene_3746
gene_3747
gene_3748
gene_3749
gene_3750
gene_3751
gene_3752
gene_3753
gene_3754
gene_3755
gene_3756
gene_3757
gene_3758
gene_3759
gene_3760
gene_3761
gene_3762
gene_3763
gene_3764
gene_3765
gene_3766
gene_3767
gene_3768
gene_3769
gene_3770
gene_3771
gene_3772
gene_3773
gene_3774
gene_3775
gene_3776
gene_3777
gene_3778
gene_3779
gene_3780
gene_3781
gene_3782
gene_3783
gene_3784
gene_3785
gene_3786
gene_3787
gene_3788
gene_3789
gene_3790
gene_3791
gene_3792
gene_3793
gene_3794
gene_3795
gene_3796
gene_3797
gene_3798
gene_3799
gene_3800
gene_3801
gene_3802
gene_3803
gene_3804
gene_3805
gene_3806
gene_3807
gene_3808
gene_3809
gene_3810
gene_3811
gene_3812
gene_3813
gene_3814
gene_3815
gene_3816
gene_3817
gene_3818
gene_3819
gene_3820
gene_3821
gene_3822
gene_3823
gene_3824
gene_3825
gene_3826
gene_3827
gene_3828
gene_3829
gene_3830
gene_3831
gene_3832
gene_3833
gene_3834
gene_3835
gene_3836
gene_3837
gene_3838
gene_3839
gene_3840
gene_3841
gene_3842
gene_3843
gene_3844
gene_3845
gene_3846
gene_3847
gene_3848
gene_3849
gene_3850
gene_3851
gene_3852
gene_3853
gene_3854
gene_3855
gene_3856
gene_3857
gene_3858
gene_3859
gene_3860
gene_3861
gene_3862
gene_3863
gene_3864
gene_3865
gene_3866
gene_3867
gene_3868
gene_3869
gene_3870
gene_3871
gene_3872
gene_3873
gene_3874
gene_3875
gene_3876
gene_3877
gene_3878
gene_3879
gene_3880
gene_3881
gene_3882
gene_3883
gene_3884
gene_3885
gene_3886
gene_3887
gene_3888
gene_3889
gene_3890
gene_3891
gene_3892
gene_3893
gene_3894
gene_3895
gene_3896
gene_3897
gene_3898
gene_3899
gene_3900
gene_3901
gene_3902
gene_3903
gene_3904
gene_3905
gene_3906
gene_3907
gene_3908
gene_3909
gene_3910
gene_3911
gene_3912
gene_3913
gene_3914
gene_3915
gene_3916
gene_3917
gene_3918
gene_3919
gene_3920
gene_3921
gene_3922
gene_3923
gene_3924
gene_3925
gene_3926
gene_3927
gene_3928
gene_3929
gene_3930
gene_3931
gene_3932
gene_3933
gene_3934
gene_3935
gene_3936
gene_3937
gene_3938
gene_3939
gene_3940
gene_3941
gene_3942
gene_3943
gene_3944
gene_3945
gene_3946
gene_3947
gene_3948
gene_3949
gene_3950
gene_3951
gene_3952
gene_3953
gene_3954
gene_3955
gene_3956
gene_3957
gene_3958
gene_3959
gene_3960
gene_3961
gene_3962
gene_3963
gene_3964
gene_3965
gene_3966
gene_3967
gene_3968
gene_3969
gene_3970
gene_3971
gene_3972
gene_3973
gene_3974
gene_3975
gene_3976
gene_3977
gene_3978
gene_3979
gene_3980
gene_3981
gene_3982
gene_3983
gene_3984
gene_3985
gene_3986
gene_3987
gene_3988
gene_3989
gene_3990
gene_3991
gene_3992
gene_3993
gene_3994
gene_3995
gene_3996
gene_3997
gene_3998
gene_3999
Parameters
n_estimators n_estimators: int, default=100

The number of trees in the forest.

.. versionchanged:: 0.22
The default value of ``n_estimators`` changed from 10 to 100
in 0.22.
700
n_jobs n_jobs: int, default=None

The number of jobs to run in parallel. :meth:`fit`, :meth:`predict`,
:meth:`decision_path` and :meth:`apply` are all parallelized over the
trees. ``None`` means 1 unless in a :obj:`joblib.parallel_backend`
context. ``-1`` means using all processors. See :term:`Glossary
<n_jobs>` for more details.
-1
random_state random_state: int, RandomState instance or None, default=None

Controls both the randomness of the bootstrapping of the samples used
when building trees (if ``bootstrap=True``) and the sampling of the
features to consider when looking for the best split at each node
(if ``max_features < n_features``).
See :term:`Glossary <random_state>` for details.
307
criterion criterion: {"gini", "entropy", "log_loss"}, default="gini"

The function to measure the quality of a split. Supported criteria are
"gini" for the Gini impurity and "log_loss" and "entropy" both for the
Shannon information gain, see :ref:`tree_mathematical_formulation`.
Note: This parameter is tree-specific.
'gini'
max_depth max_depth: int, default=None

The maximum depth of the tree. If None, then nodes are expanded until
all leaves are pure or until all leaves contain less than
min_samples_split samples.
None
min_samples_split min_samples_split: int or float, default=2

The minimum number of samples required to split an internal node:

- If int, then consider `min_samples_split` as the minimum number.
- If float, then `min_samples_split` is a fraction and
`ceil(min_samples_split * n_samples)` are the minimum
number of samples for each split.

.. versionchanged:: 0.18
Added float values for fractions.
2
min_samples_leaf min_samples_leaf: int or float, default=1

The minimum number of samples required to be at a leaf node.
A split point at any depth will only be considered if it leaves at
least ``min_samples_leaf`` training samples in each of the left and
right branches. This may have the effect of smoothing the model,
especially in regression.

- If int, then consider `min_samples_leaf` as the minimum number.
- If float, then `min_samples_leaf` is a fraction and
`ceil(min_samples_leaf * n_samples)` are the minimum
number of samples for each node.

.. versionchanged:: 0.18
Added float values for fractions.
1
min_weight_fraction_leaf min_weight_fraction_leaf: float, default=0.0

The minimum weighted fraction of the sum total of weights (of all
the input samples) required to be at a leaf node. Samples have
equal weight when sample_weight is not provided.
0.0
max_features max_features: {"sqrt", "log2", None}, int or float, default="sqrt"

The number of features to consider when looking for the best split:

- If int, then consider `max_features` features at each split.
- If float, then `max_features` is a fraction and
`max(1, int(max_features * n_features_in_))` features are considered at each
split.
- If "sqrt", then `max_features=sqrt(n_features)`.
- If "log2", then `max_features=log2(n_features)`.
- If None, then `max_features=n_features`.

.. versionchanged:: 1.1
The default of `max_features` changed from `"auto"` to `"sqrt"`.

Note: the search for a split does not stop until at least one
valid partition of the node samples is found, even if it requires to
effectively inspect more than ``max_features`` features.
'sqrt'
max_leaf_nodes max_leaf_nodes: int, default=None

Grow trees with ``max_leaf_nodes`` in best-first fashion.
Best nodes are defined as relative reduction in impurity.
If None then unlimited number of leaf nodes.
None
min_impurity_decrease min_impurity_decrease: float, default=0.0

A node will be split if this split induces a decrease of the impurity
greater than or equal to this value.

The weighted impurity decrease equation is the following::

N_t / N * (impurity - N_t_R / N_t * right_impurity
- N_t_L / N_t * left_impurity)

where ``N`` is the total number of samples, ``N_t`` is the number of
samples at the current node, ``N_t_L`` is the number of samples in the
left child, and ``N_t_R`` is the number of samples in the right child.

``N``, ``N_t``, ``N_t_R`` and ``N_t_L`` all refer to the weighted sum,
if ``sample_weight`` is passed.

.. versionadded:: 0.19
0.0
bootstrap bootstrap: bool, default=True

Whether bootstrap samples are used when building trees. If False, the
whole dataset is used to build each tree.
True
oob_score oob_score: bool or callable, default=False

Whether to use out-of-bag samples to estimate the generalization score.
By default, :func:`~sklearn.metrics.accuracy_score` is used.
Provide a callable with signature `metric(y_true, y_pred)` to use a
custom metric. Only available if `bootstrap=True`.

For an illustration of out-of-bag (OOB) error estimation, see the example
:ref:`sphx_glr_auto_examples_ensemble_plot_ensemble_oob.py`.
False
verbose verbose: int, default=0

Controls the verbosity when fitting and predicting.
0
warm_start warm_start: bool, default=False

When set to ``True``, reuse the solution of the previous call to fit
and add more estimators to the ensemble, otherwise, just fit a whole
new forest. See :term:`Glossary <warm_start>` and
:ref:`tree_ensemble_warm_start` for details.
False
class_weight class_weight: {"balanced", "balanced_subsample"}, dict or list of dicts, default=None

Weights associated with classes in the form ``{class_label: weight}``.
If not given, all classes are supposed to have weight one. For
multi-output problems, a list of dicts can be provided in the same
order as the columns of y.

Note that for multioutput (including multilabel) weights should be
defined for each class of every column in its own dict. For example,
for four-class multilabel classification weights should be
[{0: 1, 1: 1}, {0: 1, 1: 5}, {0: 1, 1: 1}, {0: 1, 1: 1}] instead of
[{1:1}, {2:5}, {3:1}, {4:1}].

The "balanced" mode uses the values of y to automatically adjust
weights inversely proportional to class frequencies in the input data
as ``n_samples / (n_classes * np.bincount(y))``

The "balanced_subsample" mode is the same as "balanced" except that
weights are computed based on the bootstrap sample for every tree
grown.

For multi-output, the weights of each column of y will be multiplied.

Note that these weights will be multiplied with sample_weight (passed
through the fit method) if sample_weight is specified.
None
ccp_alpha ccp_alpha: non-negative float, default=0.0

Complexity parameter used for Minimal Cost-Complexity Pruning. The
subtree with the largest cost complexity that is smaller than
``ccp_alpha`` will be chosen. By default, no pruning is performed. See
:ref:`minimal_cost_complexity_pruning` for details. See
:ref:`sphx_glr_auto_examples_tree_plot_cost_complexity_pruning.py`
for an example of such pruning.

.. versionadded:: 0.22
0.0
max_samples max_samples: int or float, default=None

If bootstrap is True, the number of samples to draw from X
to train each base estimator.

- If None (default), then draw `X.shape[0]` samples irrespective of
`sample_weight`.
- If int, then draw `max_samples` samples.
- If float, then draw `max_samples * X.shape[0]` unweighted samples
or `max_samples * sample_weight.sum()` weighted samples.

.. versionadded:: 0.22

.. versionchanged:: 1.9
Float `max_samples` is relative to `sample_weight.sum()` instead of
`X.shape[0]` for weighted samples.
None
monotonic_cst monotonic_cst: array-like of int of shape (n_features), default=None

Indicates the monotonicity constraint to enforce on each feature.
- 1: monotonic increase
- 0: no constraint
- -1: monotonic decrease

If monotonic_cst is None, no constraints are applied.

Monotonicity constraints are not supported for:
- multiclass classifications (i.e. when `n_classes > 2`),
- multioutput classifications (i.e. when `n_outputs_ > 1`).

The constraints hold over the probability of the positive class.

Read more in the :ref:`User Guide <monotonic_cst_gbdt>`.

.. versionadded:: 1.4
None
Fitted attributes
Name Type Value
classes_ classes_: ndarray of shape (n_classes,) or a list of such arrays

The classes labels (single output problem), or a list of arrays of
class labels (multi-output problem).
ndarray[object](5,) ['BRCA','COAD','KIRC','LUAD','PRAD']
estimator_ estimator_: :class:`~sklearn.tree.DecisionTreeClassifier`

The child estimator template used to create the collection of fitted
sub-estimators.

.. versionadded:: 1.2
`base_estimator_` was renamed to `estimator_`.
DecisionTreeClassifier DecisionTreeClassifier()
estimators_ estimators_: list of DecisionTreeClassifier

The collection of fitted sub-estimators.
list [DecisionTreeC...te=1377099637), DecisionTreeC...ate=581175985), DecisionTreeC...te=1797952420), DecisionTreeC...ate=854241115), ...]
estimators_samples_ estimators_samples_: list of arrays

The subset of drawn samples (i.e., the in-bag samples) for each base
estimator. Each subset is defined by an array of the indices selected.

.. versionadded:: 1.4
list [array([259, 4..., dtype=int32), array([145, 1..., dtype=int32), array([257, 6..., dtype=int32), array([513, 4..., dtype=int32), ...]
feature_importances_ feature_importances_: ndarray of shape (n_features,)

The impurity-based feature importances.
The higher, the more important the feature.
The importance of a feature is computed as the (normalized)
total reduction of the criterion brought by that feature. It is also
known as the Gini importance.

Warning: impurity-based feature importances can be misleading for
high cardinality features (many unique values). See
:func:`sklearn.inspection.permutation_importance` as an alternative.
ndarray[float64](4000,) [0.,0.,0.,...,0.,0.,0.]
n_classes_ n_classes_: int or list

The number of classes (single output problem), or a list containing the
number of classes for each output (multi-output problem).
int 5
n_features_in_ n_features_in_: int

Number of features seen during :term:`fit`.

.. versionadded:: 0.24
int 4000
n_outputs_ n_outputs_: int

The number of outputs when ``fit`` is performed.
int 1

The cancer classification task was treated as a multiclass classification problem, where the goal is to predict the clinically determined cancer type using gene expression RNA-Seq data. A Random Forest classifier was selected because it performs well on high-dimensional numerical datasets and can capture complex nonlinear relationships between gene expression variables and cancer classifications. The model was trained using 700 decision trees with square-root feature sampling to improve generalization and reduce overfitting while still allowing the model to learn meaningful biological patterns from thousands of gene expression variables. Since the dataset consists entirely of numerical gene expression measurements, a preprocessing pipeline was implemented using a Pipeline object with median imputation to handle any potential missing values before model training. The dataset was separated into training and testing datasets using a stratified 80/20 split to preserve the distribution of cancer types across both datasets. After training, the model was used to generate predictions on unseen test data, and performance was evaluated using classification metrics including accuracy, precision, and recall to assess the effectiveness of the cancer classification system.

Results¶

In [9]:
# report model metrics
y_pred = model.predict(
    X_test
)

test_accuracy = accuracy_score(
    y_test,
    y_pred,
)

test_precision = precision_score(
    y_test,
    y_pred,
    average="weighted",
)

test_recall = recall_score(
    y_test,
    y_pred,
    average="weighted",
)

print("Test Accuracy:", test_accuracy)
print("Test Precision:", test_precision)
print("Test Recall:", test_recall)
Test Accuracy: 1.0
Test Precision: 1.0
Test Recall: 1.0
In [10]:
#| fig-cap: "Figure 2. Confusion Matrix for Cancer Type Predictions on the Test Data"
# summary figure
cm = confusion_matrix(
    y_test,
    y_pred,
    labels=model.classes_,
)

plt.figure()

plt.imshow(cm)

plt.xlabel("Predicted Cancer Type")
plt.ylabel("Actual Cancer Type")
plt.title("Cancer Type Prediction Confusion Matrix")

plt.xticks(
    range(len(model.classes_)),
    model.classes_,
    rotation=45,
)

plt.yticks(
    range(len(model.classes_)),
    model.classes_,
)

plt.colorbar(label="Number of Samples")

plt.show()
No description has been provided for this image

Overall, the results indicate that the Random Forest model provides extremely strong performance for classifying cancer types using gene expression RNA-Seq data. The model achieved a test accuracy, precision, and recall of 1.0 on the unseen test dataset, indicating that all cancer samples in the test set were correctly classified. These results suggest that the gene expression variables contain highly informative biological patterns that strongly differentiate the five cancer types included in the dataset. The confusion matrix further supports this result, as all observations appear along the main diagonal with no visible off-diagonal misclassifications, indicating that the model successfully predicted each cancer category without error on the test data. Together, these results demonstrate that machine learning models can effectively identify meaningful relationships within high-dimensional gene expression data and accurately classify cancer types. However, despite the near-perfect performance, these results should still be interpreted carefully because the dataset is relatively controlled and limited to five cancer classes, meaning real-world clinical performance may be lower when applied to more diverse patient populations and additional cancer subtypes.

Discussion¶

Based on the results presented above, I would recommend continuing development of this model as part of a proof-of-concept cancer classification system for the biotechnology startup. The Random Forest model demonstrated extremely strong performance on the test dataset, achieving perfect accuracy, precision, and recall across all five cancer classifications. These results suggest that gene expression RNA-Seq data contains highly informative biological patterns that can effectively distinguish between different cancer types. The confusion matrix further supports this conclusion, as the model correctly classified all cancer samples without visible misclassification errors on the unseen test data.

One important benefit of this model is its ability to analyze thousands of gene expression variables simultaneously and identify complex nonlinear relationships within high-dimensional biological data. Traditional cancer diagnosis often requires multiple clinical tests and expert interpretation, while a machine learning system based on RNA-Seq data could potentially provide rapid and automated cancer classification support. In practice, this type of system could help researchers and healthcare professionals better understand cancer biology, assist in identifying cancer subtypes, and potentially support earlier detection and treatment planning. Because Random Forest models can capture interactions across many gene expression variables, the model is capable of learning biological patterns that may not be obvious through manual analysis alone.

However, several important limitations should still be considered before using this model in a real clinical environment. Although the model achieved perfect performance on the provided dataset, the dataset itself is relatively controlled and limited to five cancer types. Real-world medical data is often significantly more complex, noisy, and diverse than curated research datasets. Additional challenges such as patient variability, sequencing errors, rare cancer subtypes, and differences between hospitals or sequencing platforms could reduce real-world performance. The model also relies entirely on gene expression information and does not incorporate other clinically important factors such as imaging data, patient history, genetic mutations, environmental factors, or physician observations.

For these reasons, the model should not be used as a fully automated medical decision-making system without expert oversight. Instead, it would be most effective as part of a clinical decision-support system where predictions generated by the model are reviewed alongside additional medical evidence and professional judgment. This approach would allow healthcare professionals to benefit from the model’s predictive capabilities while reducing the risks associated with relying entirely on automated predictions in high-stakes medical settings.

Overall, the results demonstrate that machine learning models can effectively classify cancer types using gene expression RNA-Seq data. While the current model still has limitations and would require additional validation before clinical deployment, the strong predictive performance suggests that machine learning-based genomic cancer classification is a promising area for future biotechnology and healthcare research.