?? assocrulemining.java
字號:
protected boolean notMemberOf(short number, short[] itemSet) {
// Loop through itemSet
for(int index=0;index<itemSet.length;index++) {
if (number < itemSet[index]) return(true);
if (number == itemSet[index]) return(false);
}
// Got to the end of itemSet and found nothing, return true
return(true);
}
/* -------------------------------------------------- */
/* */
/* ITEM SET COMBINATIONS */
/* */
/* -------------------------------------------------- */
/* COMBINATIONS */
/** Invokes <TT>combinations</TT> method to calculate all possible
combinations of a given item set. <P>
For example given the item set [1,2,3] this will result in the
combinations[[1],[2],[3],[1,2],[1,3],[2,3],[1,2,3]].
@param inputSet the given item set.
@return array of arrays representing all possible combinations (may be null
if no combinations). */
protected short[][] combinations(short[] inputSet) {
if (inputSet == null) return(null);
else {
short[][] outputSet = new short[getCombinations(inputSet)][];
combinations(inputSet,0,null,outputSet,0);
return(outputSet);
}
}
/** Recursively calculates all possible combinations of a given item
set.
@param inputSet the given item set.
@param inputIndex the index within the input set marking current
element under consideration (0 at start).
@param sofar the part of a combination determined sofar during the
recursion (null at start).
@param outputSet the combinations collected so far, will hold all
combinations when recursion ends.
@param outputIndex the current location in the output set.
@return revised output index. */
private int combinations(short[] inputSet, int inputIndex,
short[] sofar, short[][] outputSet, int outputIndex) {
short[] tempSet;
int index=inputIndex;
// Loop through input array
while(index < inputSet.length) {
tempSet = realloc1(sofar,inputSet[index]);
outputSet[outputIndex] = tempSet;
outputIndex = combinations(inputSet,index+1,
copyItemSet(tempSet),outputSet,outputIndex+1);
index++;
}
// Return
return(outputIndex);
}
/* GET COMBINATTIONS */
/** Gets the number of possible combinations of a given item set.
@param set the given item set.
@return number of possible combinations. */
private int getCombinations(short[] set) {
int counter=0, numComb;
numComb = (int) Math.pow(2.0,set.length)-1;
// Return
return(numComb);
}
/* ---------------------------------------------------------------- */
/* */
/* MISCELANEOUS */
/* */
/* ---------------------------------------------------------------- */
/* COPY ITEM SET */
/** Makes a copy of a given itemSet.
@param itemSet the given item set.
@return copy of given item set. */
protected short[] copyItemSet(short[] itemSet) {
// Check whether there is a itemSet to copy
if (itemSet == null) return(null);
// Do copy and return
short[] newItemSet = new short[itemSet.length];
for(int index=0;index<itemSet.length;index++) {
newItemSet[index] = itemSet[index];
}
// Return
return(newItemSet);
}
/* ------------------------------------------------- */
/* */
/* OUTPUT METHODS */
/* */
/* ------------------------------------------------- */
/* ----------------- */
/* OUTPUT DATA TABLE */
/* ----------------- */
/** Outputs stored input data set; initially read from input data file, but
may be reordered or pruned if desired by a particular application. */
public void outputDataArray() {
if (isPrunedFlag) System.out.println("DATA SET (Ordered and Pruned)\n" +
"-----------------------------");
else {
if (isOrderedFlag) System.out.println("DATA SET (Ordered)\n" +
"------------------");
else System.out.println("DATA SET\n" + "--------");
}
// Loop through data array
for(int index=0;index<dataArray.length;index++) {
outputItemSet(dataArray[index]);
System.out.println();
}
}
/** Outputs the given array of array of short integers. <P> Used for
diagnostic purposes.
@param dataSet the five array of arrays. */
protected void outputDataArray(short[][] dataSet) {
if (dataSet==null) {
System.out.println("null");
return;
}
// Loop through data array
for(int index=0;index<dataSet.length;index++) {
outputItemSet(dataSet[index]);
System.out.println();
}
}
/* -------------- */
/* OUTPUT ITEMSET */
/* -------------- */
/** Outputs a given item set.
@param itemSet the given item set. */
protected void outputItemSet(short[] itemSet) {
// Check for empty set
if (itemSet == null) System.out.print(" null ");
// Process
else {
// Reconvert where input dataset has been reordered and possible
// pruned.
short[] tempItemSet = reconvertItemSet(itemSet);
// Loop through item set elements
int counter = 0;
for (int index=0;index<tempItemSet.length;index++) {
if (counter == 0) {
counter++;
System.out.print(" {");
}
else System.out.print(" ");
System.out.print(tempItemSet[index]);
}
System.out.print("} ");
}
}
/* ---------------------- */
/* OUTPUT DATA ARRAY SIZE */
/* ---------------------- */
/** Outputs size (number of records and number of elements) of stored
input data set read from input data file. */
public void outputDataArraySize() {
int numRecords = 0;
int numElements = 0;
// Loop through data array
for (int index=0;index<dataArray.length;index++) {
if (dataArray[index] != null) {
numRecords++;
numElements = numElements+dataArray[index].length;
}
}
// Output
System.out.println("Number of records = " + numRecords);
System.out.println("Number of elements = " + numElements);
double density = (double) numElements/ (numCols*numRecords);
System.out.println("Data set density = " + twoDecPlaces(density) +
"%");
}
/* ------------------------ */
/* OUTPUT CONVERSION ARRAYS */
/* ------------------------ */
/** Outputs conversion array (used to renumber columns for input data
in terms of frequency of single attributes --- reordering will enhance
performance for some ARM algorithms). */
public void outputConversionArrays() {
// Conversion array
System.out.println("Conversion Array = ");
for(int index=1;index<conversionArray.length;index++) {
System.out.println("(" + index + ") " + conversionArray[index][0] +
" = " + conversionArray[index][1]);
}
// Reconversion array
System.out.println("Reonversion Array = ");
for(int index=1;index<reconversionArray.length;index++) {
System.out.println("(" + index + ") " + reconversionArray[index]);
}
}
/* ----------- */
/* OUTPUT MENU */
/* ----------- */
/** Outputs menu for command line arguments. */
protected void outputMenu() {
System.out.println();
System.out.println("-C = Confidence (default 80%)");
System.out.println("-F = File name");
System.out.println("-N = Number of classes (Optional)");
System.out.println("-S = Support (default 20%)");
System.out.println();
// Exit
System.exit(1);
}
/* --------------- */
/* OUTPUT SETTINGS */
/* --------------- */
/** Outputs command line values provided by user. */
protected void outputSettings() {
System.out.println("SETTINGS\n--------");
System.out.println("File name = " + fileName);
System.out.println("Support (default 20%) = " + support);
System.out.println("Confidence (default 80%) = " + confidence);
System.out.println();
}
/* OUTPUT SETTINGS */
/** Outputs instance field values. */
protected void outputSettings2() {
System.out.println("SETTINGS\n--------");
System.out.println("Number of records = " + numRows);
System.out.println("Number of columns = " + numCols);
System.out.println("Support (default 20%) = " + support);
System.out.println("Confidence (default 80%) = " + confidence);
System.out.println("Min support = " + minSupport +
" (records)");
System.out.println("Num one itemsets = " + numOneItemSets);
}
/* -------------------------------------- */
/* OUTPUT SUPPORT AND CONFIDENCE SETTINGS */
/* -------------------------------------- */
/** Outputs current support and confidence settings. */
public void outputSuppAndConf() {
System.out.println("Support = " + twoDecPlaces(support) +
", Confidence = " + twoDecPlaces(confidence));
}
/* ------------------------ */
/* OUTPUT RULE LINKED LISTS */
/* ------------------------ */
/** Outputs contents of rule linked list (if any) asuming that the list
represents a set of ARs. */
public void outputRules() {
outputRules(startRulelist);
}
/** Outputs given rule list.
@param ruleList the given rule list. */
public void outputRules(RuleNode ruleList) {
// Check for empty rule list
if (ruleList==null) System.out.println("No rules generated!");
// Loop through rule list
int number = 1;
RuleNode linkRuleNode = ruleList;
while (linkRuleNode != null) {
System.out.print("(" + number + ") ");
outputRule(linkRuleNode);
System.out.println(" " +
twoDecPlaces(linkRuleNode.confidenceForRule) + "%");
number++;
linkRuleNode = linkRuleNode.next;
}
}
/** Outputs a rule asuming that the rule represents an ARs.
@param rule the rule to be output. */
private void outputRule(RuleNode rule) {
outputItemSet(rule.antecedent);
System.out.print(" -> ");
outputItemSet(rule.consequent);
}
/* OUTPUT RULE LINKED LIST WITH DEFAULT */
/** Outputs contents of rule linked list (if any), with reconversion, such
that last rule is the default rule. */
public void outputRulesWithDefault() {
int number = 1;
RuleNode linkRuleNode = startRulelist;
while (linkRuleNode != null) {
// Output rule number
System.out.print("(" + number + ") ");
// Output antecedent
if (linkRuleNode.next==null) System.out.print("Default -> ");
else {
outputItemSet(linkRuleNode.antecedent);
System.out.print(" -> ");
}
// Output concequent
outputItemSet(linkRuleNode.consequent);
System.out.println(" " +
twoDecPlaces(linkRuleNode.confidenceForRule) + "%");
// Increment parameters
number++;
linkRuleNode = linkRuleNode.next;
}
}
/* --------------------------------- */
/* */
/* DIAGNOSTIC OUTPUT */
/* */
/* --------------------------------- */
/* OUTPUT DURATION */
/** Outputs difference between two given times.
@param time1 the first time.
@param time2 the second time.
@return duration. */
public double outputDuration(double time1, double time2) {
double duration = (time2-time1)/1000;
System.out.println("Generation time = " + twoDecPlaces(duration) +
" seconds (" + twoDecPlaces(duration/60) + " mins)");
// Return
return(duration);
}
/* -------------------------------- */
/* */
/* OUTPUT UTILITIES */
/* */
/* -------------------------------- */
/* TWO DECIMAL PLACES */
/** Converts given real number to real number rounded up to two decimal
places.
@param number the given number.
@return the number to two decimal places. */
protected double twoDecPlaces(double number) {
int numInt = (int) ((number+0.005)*100.0);
number = ((double) numInt)/100.0;
return(number);
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -