In [1]:
import sys
home_directory = '/dfs/scratch2/fcipollone'
sys.path.append(home_directory)
import numpy as np
from nbminer.notebook_miner import NotebookMiner

hw_filenames = np.load('../homework_names_jplag_combined_per_student.npy')
hw_notebooks = [[NotebookMiner(filename) for filename in temp[:59]] for temp in hw_filenames]

In [2]:
from nbminer.pipeline.pipeline import Pipeline
from nbminer.features.features import Features
from nbminer.preprocess.get_ast_features import GetASTFeatures
from nbminer.preprocess.get_imports import GetImports
from nbminer.preprocess.resample_by_node import ResampleByNode
from nbminer.encoders.ast_graph.ast_graph import ASTGraphReducer
from nbminer.preprocess.feature_encoding import FeatureEncoding
from nbminer.encoders.ast_graph.postorder_hash import PostorderHash
from nbminer.encoders.cluster.kmeans_encoder import KmeansEncoder
from nbminer.results.similarity.jaccard_similarity import NotebookJaccardSimilarity
from nbminer.results.prediction.corpus_identifier import CorpusIdentifier

a = Features(hw_notebooks[2], 'hw2')
a.add_notebooks(hw_notebooks[3], 'hw3')
a.add_notebooks(hw_notebooks[4], 'hw4')
a.add_notebooks(hw_notebooks[5], 'hw5')
gastf = GetASTFeatures()
rbn = ResampleByNode()
gi = GetImports()
ph = PostorderHash(None, threshold=0, split_call=True, hash_many=True)
ci = CorpusIdentifier()
pipe = Pipeline([gastf, rbn, gi, ph, ci])
a = pipe.transform(a)


<nbminer.preprocess.get_ast_features.GetASTFeatures object at 0x7ff617de3518>
236
<nbminer.preprocess.resample_by_node.ResampleByNode object at 0x7ff62ccf4358>
236
<nbminer.preprocess.get_imports.GetImports object at 0x7ff617de35f8>
236
<nbminer.encoders.ast_graph.postorder_hash.PostorderHash object at 0x7ff617df54a8>
236
<nbminer.results.prediction.corpus_identifier.CorpusIdentifier object at 0x7ff617dd8828>
236

In [3]:
import sklearn
from sklearn.neural_network import MLPClassifier
from sklearn.metrics import accuracy_score
from sklearn.model_selection import cross_val_score

X, y = ci.get_data_set()
countvec = sklearn.feature_extraction.text.CountVectorizer()
X_list = [" ".join(el) for el in X]
countvec.fit(X_list)
X = countvec.transform(X_list)

p = np.random.permutation(len(X.todense()))
X = X.todense()[p]
y = np.array(y)[p]

clfAdaboost = sklearn.ensemble.AdaBoostClassifier(n_estimators=100)
clf = sklearn.ensemble.RandomForestClassifier(n_estimators=400, max_depth=4)
scores = cross_val_score(clf, X, y, cv=8)
print(scores)
print(np.mean(scores))


[0.90625    0.8125     0.71875    0.78571429 0.89285714 0.89285714
 0.85714286 0.92857143]
0.8493303571428571

In [4]:
X_list[0]


Out[4]:
'template_0 template_593 template_0 template_0 template_0 template_0 template_0 template_1 template_96 template_93 template_594 template_5684 template_1 template_6 template_601 template_10 template_602 template_1 template_14 template_1 template_8256 template_10 template_1372 template_1 template_14 template_8257 template_1 template_8258 template_8259 template_1 template_6 template_61 template_8260 template_10 template_138 template_1 template_6 template_10 template_1 template_14 template_1 template_4359 template_8261 template_30 template_146 template_1315 template_1259 template_101 template_8262 template_1 template_1 template_1 template_357 template_582 template_253 template_10 template_8263 template_8264 template_1 template_185 template_10 template_90 template_10 template_52 template_10 template_52 template_10 template_52 template_32 template_138 template_10 template_52 template_10 template_52 template_10 template_52 template_10 template_138 template_10 template_138 template_1 template_155 template_1 template_155 template_1 template_413 template_487 template_5860 template_1 template_1 template_1215 template_1216 template_1 template_96 template_482 template_1 template_301 template_582 template_1 template_232 template_1 template_232 template_1 template_1 template_232 template_1 template_1 template_81 template_1 template_1 template_6 template_81 template_8265 template_62 template_8266 template_1 template_6 template_1 template_2665 template_1 template_633 template_8267 template_1 template_8268 template_1 template_365 template_1 template_4184 template_8269 template_1 template_1 template_996 template_2572 template_1 template_1 template_14 template_68 template_1 template_1 template_1 template_1 template_301 template_582 template_10 template_8270 template_10 template_17 template_3290 template_8271 template_1 template_8272 template_8273 template_4101 template_172 template_8274 template_8275 template_1 template_17 template_1218 template_8276 template_1103 template_10 template_8277 template_10 template_433 template_10 template_652 template_8278 template_8279 template_8280 template_8281 template_8282 template_74 template_1 template_14 template_909 template_10 template_3548 template_10 template_30 template_1 template_478 template_1 template_2581 template_1 template_30 template_31 template_1 template_217 template_10 template_1 template_6 template_1 template_1 template_17 template_3431 template_1346 template_621 template_4676 template_8283 template_8284 template_10 template_1 template_1 template_430 template_1 template_6 template_4530 template_2749 template_1 template_237 template_4131 template_1 template_1103 template_238 template_1 template_342 template_8285 template_1 template_1 template_996 template_1346 template_4249 template_456 template_8286 template_10 template_4720 template_1 template_6 template_105 template_5992 template_8287 template_1 template_14 template_81 template_8288 template_10 template_8289 template_1 template_10 template_231 template_8290 template_6961 template_1 template_14 template_2777 template_2778 template_1 template_85 template_2960 template_2961 template_6149 template_8291 template_10 template_1 template_6 template_8292 template_8293 template_125 template_62 template_1 template_6 template_1 template_8294 template_8295 template_1 template_8296 template_281 template_1 template_14 template_8297 template_8298 template_10 template_10 template_53 template_2791 template_1 template_14 template_7913 template_7914 template_1 template_1985 template_1147 template_8299 template_1 template_6 template_8300 template_2933 template_8301 template_1 template_30 template_1 template_294 template_8302 template_10 template_8303 template_1 template_1 template_6 template_30 template_5515 template_1 template_1 template_6 template_30 template_1 template_14 template_100 template_1220 template_1 template_30 template_1 template_14 template_100 template_101 template_1 template_14 template_1 template_2665 template_31 template_253 template_1 template_1 template_6 template_1634 template_10 template_7591 template_172 template_1 template_17 template_462 template_685 template_8304 template_8305 template_8306 template_1 template_413 template_8307 template_1 template_1 template_14 template_30 template_31 template_1220 template_8308 template_8309 template_8310 template_8311 template_8312 template_1 template_17 template_17 template_8313 template_8314 template_2040 template_1 template_8315 template_8316 template_487 template_8317 template_175 template_1 template_1258 template_1 template_14 template_4562 template_10 template_8318 template_1 template_14 template_2777 template_2778 template_1 template_74 template_5778 template_2961 template_10 template_2962 template_1 template_6 template_96 template_1 template_8319 template_185 template_1 template_6 template_6062 template_6519 template_30 template_93 template_71 template_8320 template_10 template_8321 template_30 template_1 template_14 template_8322 template_8323 template_1 template_14 template_8297 template_10 template_8324 template_1 template_6 template_96 template_5147 template_1 template_93 template_8325 template_8326 template_1 template_1 template_6 template_8327 template_8328 template_1 template_14 template_394 template_1845 template_1 template_14 template_3905 template_8329 template_1 template_6 template_1 template_8330 template_8331 template_1 template_14 template_5529 template_5530 template_1 template_96 template_1 template_6 template_1 template_1332 template_92 template_8332 template_8333 template_10 template_74 template_1 template_14 template_909 template_310 template_1 template_1 template_79 template_254 template_1 template_1 template_996 template_1346 template_30 template_1 template_478 template_30 template_1 template_1 template_1463 template_1 template_14 template_8334 template_10 template_10 template_17 template_8335 template_10 template_17 template_1 template_433 template_4166 template_4806 template_8336 template_30 template_1 template_478 template_1 template_2581 template_1 template_232 template_1 template_6 template_495 template_3677 template_30 template_1 template_478 template_1886 template_1 template_237 template_10 template_1 template_14 template_1 template_1 template_2035 template_6120 template_10 template_8337 template_1 template_478 template_1 template_2581 template_10 template_1923 template_10 template_1 template_14 template_1 template_1 template_996 template_2572 template_201 template_1 template_232 template_473 template_10 template_8338 template_172 template_8339 template_30 template_1 template_164 template_1 template_6237 template_8340 template_8341 template_1 template_6 template_103 template_1 template_8342 template_30 template_10 template_1792 template_8343 template_10 template_8344 template_10 template_1 template_14 template_1 template_1 template_430 template_6120 template_673 template_172 template_8345 template_8346 template_8347 template_74 template_1 template_14 template_8348 template_1 template_8165 template_8349 template_93 template_80 template_5854 template_8350 template_1 template_93 template_4017 template_10 template_8351 template_1 template_14 template_68 template_8352 template_10 template_17 template_85 template_6751 template_6752 template_8353 template_10 template_1 template_6 template_8292 template_8293 template_1 template_6 template_53 template_2791 template_10 template_8354 template_7905 template_1 template_4551 template_1 template_155 template_2011 template_1 template_1607 template_2831 template_1 template_6 template_10 template_1 template_1 template_1 template_1 template_14 template_1 template_2173 template_8355 template_1776 template_1 template_8356 template_207 template_1 template_70 template_1 template_6 template_1 template_8357 template_8358 template_1 template_8359 template_8360 template_8361 template_8362 template_62 template_8363 template_8364 template_101 template_8365 template_10 template_8366 template_1926 template_8367 template_1 template_6 template_8368 template_8369 template_8370 template_125 template_8371 template_8372 template_10 template_1 template_6 template_123 template_529 template_10 template_1 template_30 template_146 template_1673 template_8302 template_8373 template_30 template_1 template_14 template_100 template_8374 template_1 template_8375 template_1 template_10 template_1933 template_1 template_6 template_30 template_1 template_232 template_10 template_652 template_1 template_342 template_10 template_1 template_6 template_30 template_2222 template_413 template_1 template_8376 template_8377 template_1220 template_1 template_10 template_1 template_10 template_1 template_1 template_1 template_142 template_10 template_10 template_10 template_40 template_1 template_1 template_1 template_8315 template_1 template_17 template_1 template_30 template_1 template_14 template_100 template_8378 template_2040 template_10 template_8379 template_8380 template_8381 template_8382 template_8383 template_8384 template_8385 template_8386 template_8387 template_10 template_17 template_17 template_2726 template_1 template_14 template_8388 template_1 template_1 template_542 template_2144 template_10 template_8389 template_10 template_1923 template_172 template_458 template_30 template_8390 template_84 template_8391 template_8392 template_1 template_8393 template_7220 template_8394 template_10 template_8395 template_146 template_93 template_71 template_1316 template_1 template_8396 template_1 template_14 template_4562 template_10 template_8318 template_1 template_6148 template_519 template_6149 template_6150 template_1 template_14 template_578 template_579 template_1 template_30 template_284 template_281 template_3846 template_8397 template_8398 template_8399 template_10 template_8400 template_1 template_185 template_10 template_138 template_30 template_1 template_1 template_6 template_1 template_8401 template_1799 template_1 template_14 template_8402 template_1 template_357 template_1 template_147 template_8403 template_10 template_4720 template_1 template_14 template_909 template_10 template_3548 template_1 template_30 template_146 template_450 template_476 template_30 template_1 template_14 template_1 template_530 template_8404 template_10 template_8405 template_10 template_74 template_1668 template_10 template_74 template_1668 template_10 template_74 template_1668 template_10 template_74 template_1668 template_74 template_10 template_1457 template_1 template_1 template_301 template_31 template_8042 template_1 template_8041 template_1 template_303 template_1 template_14 template_8406 template_10 template_8407 template_10 template_1 template_14 template_2818 template_8408 template_1 template_14 template_2927 template_2928 template_1 template_6 template_3505 template_3654 template_42 template_62 template_328 template_1 template_14 template_8409 template_62 template_32 template_14 template_1 template_6 template_3505 template_3654 template_1 template_6 template_3744 template_8410 template_1 template_1 template_301 template_1 template_147 template_8411 template_1 template_14 template_2818 template_1 template_8412 template_8413 template_1 template_1 template_542 template_2144 template_4553 template_1 template_294 template_8414 template_8415 template_8416 template_8417 template_8418 template_42 template_1 template_14 template_80 template_8419 template_8420 template_8421 template_10 template_445 template_31 template_1 template_217 template_1 template_445 template_582 template_101 template_2737 template_1 template_30 template_31 template_1 template_217 template_1 template_1 template_30 template_31 template_84 template_30 template_1 template_164 template_1 template_6237 template_1 template_6 template_8422 template_185 template_10 template_1 template_6 template_74 template_6726 template_886 template_1 template_6 template_96 template_1 template_8319 template_185 template_10 template_231 template_21 template_32 template_1852 template_6518 template_1796 template_8423 template_8424 template_8425 template_1 template_30 template_1 template_6 template_6518 template_8426 template_10 template_14 template_8427 template_8428 template_1 template_6 template_96 template_5147 template_1 template_6 template_8429 template_185 template_1 template_1 template_14 template_1187 template_8430 template_1 template_14 template_394 template_1845 template_1 template_6 template_3905 template_8329 template_1 template_6 template_1 template_8330 template_8331 template_1 template_14 template_5529 template_5530 template_92 template_1 template_2100 template_1 template_2100 template_1 template_14 template_1664 template_8431'

In [ ]: