In [1]:
import os

import pandas as pd 
import numpy as np
import pprint

In [2]:
os.environ['OCTAVE_EXECUTABLE'] = "C:/Octave/Octave-4.2.1/bin/octave-cli-4.2.1.exe"

In [3]:
%load_ext oct2py.ipython

In [4]:
from oct2py import octave
_ = octave.addpath('LOFS_Octave/source_codes/')


warning: function LOFS_Octave/source_codes\example.m shadows a core library function

In [5]:
x = np.array([[1, 2], [3, 4]], dtype=float)
out, oclass = octave.roundtrip(x)
pprint.pprint([x, x.dtype, out, oclass, out.dtype])


x =

   1   2
   3   4

class = double
[array([[ 1.,  2.],
       [ 3.,  4.]]),
 dtype('float64'),
 array([ 1.,  2.]),
 array([ 3.,  4.]),
 dtype('<f8')]

In [6]:
def train_label(fname):
    targetname = fname.replace(".csv", ".labels")
    return pd.read_csv(targetname)

In [97]:
fpath = 'uci\\spectf_train.csv'
spectf_train = np.array(pd.read_csv(fpath))
target = np.array(train_label(fpath)).flatten()
spectf = np.hstack([target.reshape(-1, 1), spectf_train])

In [98]:
spect = octave.load('spect.mat')

In [99]:
alpha_invest_feats = octave.Alpha_Investing(spectf_train, target.reshape(-1, 1))

In [100]:
alpha_invest_feats


Out[100]:
array([[  1.,   3.,  11.,  21.,  25.,  30.,  35.]])

In [87]:
%octave_push spectf
%octave_pull spectf

In [109]:
osfs_feats = octave.fast_osfs_z(spectf, 1, 0.05)


warning: division by zero
warning: division by zero
warning: division by zero
warning: division by zero
warning: division by zero
warning: division by zero
warning: division by zero
warning: division by zero
warning: division by zero
warning: division by zero
warning: division by zero
warning: division by zero
warning: division by zero
warning: division by zero
warning: division by zero
warning: division by zero
warning: division by zero
warning: division by zero
warning: division by zero
warning: division by zero
warning: division by zero
warning: division by zero
warning: division by zero
warning: division by zero
warning: division by zero
warning: division by zero
warning: division by zero
warning: division by zero
warning: division by zero
warning: division by zero
warning: division by zero
warning: division by zero
warning: division by zero
warning: division by zero
warning: division by zero
warning: division by zero

In [110]:
osfs_feats


Out[110]:
array([[ 1.,  3.]])

In [111]:
wdbc = octave.load('wdbc.mat')

In [158]:
osfs_feats = octave.fast_osfs_z(wdbc['wdbc'], 31, 0.00000001)

In [159]:
np.array(1).flatten()


Out[159]:
array([1])

In [146]:
osfs_feats.flatten()


Out[146]:
array([  2.,  21.,  28.])

In [139]:
from sklearn import datasets
iris = datasets.load_iris()
iris_train = np.hstack([iris.target.reshape(-1, 1), iris.data[:, [0]]])

In [167]:
X = spectf_train
y = target
alpha = 0.05

X_train = np.hstack([y.reshape(-1, 1), X])
osfs_feats = octave.fast_osfs_z(X_train, 1, alpha)
feats_fix = [int(x-1) for x in list(np.array(osfs_feats).flatten())]


warning: division by zero
warning: division by zero
warning: division by zero
warning: division by zero
warning: division by zero
warning: division by zero
warning: division by zero
warning: division by zero
warning: division by zero
warning: division by zero
warning: division by zero
warning: division by zero
warning: division by zero
warning: division by zero
warning: division by zero
warning: division by zero
warning: division by zero
warning: division by zero
warning: division by zero
warning: division by zero
warning: division by zero
warning: division by zero
warning: division by zero
warning: division by zero
warning: division by zero
warning: division by zero
warning: division by zero
warning: division by zero
warning: division by zero
warning: division by zero
warning: division by zero
warning: division by zero
warning: division by zero
warning: division by zero
warning: division by zero
warning: division by zero

In [168]:
feats_fix


Out[168]:
[0, 2]

In [ ]: