2013年10月5日星期六

ml packages open source

Besides the well-known tools like R, Weka, RapidMiner, Knime, Orange, and more - see
Free Software Suites for Data Mining, Analytics, and Knowledge Discovery for the directory
here are some of the more interesting and less known software systems for machine learning, data mining, and data science:
  • Apache Mahout mahout.apache.org/, machine learning library, built on top of Hadoop for scalability; lot of great examples and libraries for getting started.
  • mloss mloss.org/software/ machine learning open-source software catalog, gives brief idea of current state of art of machine learning and machine learning open source tools
  • Natural Language Toolkit for Python (NLTK): nltk.org/
  • GraphLab (A New Parallel Framework for Machine Learning):graphlab.org/
  • scikits.learn (general-purpose machine learning in Python): scikit-learn.sourceforge.net/stable/
  • Vowpal Wabbit, a fast algorithm for online algorithm which looks at data sample at a time

2013年6月7日星期五

abstract class vs. interface

from Rahman Mahmoodi at codeproject

Background
An Abstract class without any implementation just looks like an Interface; however there are lot of differences than similarities between an Abstract class and an Interface. Let's explain both concepts and compare their similarities and differences.

What is an Abstract Class?

An abstract class is a special kind of class that cannot be instantiated. So the question is why we need a class that cannot be instantiated? An abstract class is only to be sub-classed (inherited from). In other words, it only allows other classes to inherit from it but cannot be instantiated. The advantage is that it enforces certain hierarchies for all the subclasses. In simple words, it is a kind of contract that forces all the subclasses to carry on the same hierarchies or standards.

What is an Interface?

An interface is not a class. It is an entity that is defined by the word Interface. An interface has no implementation; it only has the signature or in other words, just the definition of the methods without the body. As one of the similarities to Abstract class, it is a contract that is used to define hierarchies for all subclasses or it defines specific set of methods and their arguments. The main difference between them is that a class can implement more than one interface but can only inherit from one abstract class. Since C# doesn’t support multiple inheritance, interfaces are used to implement multiple inheritance.

Both Together

When we create an interface, we are basically creating a set of methods without any implementation that must be overridden by the implemented classes. The advantage is that it provides a way for a class to be a part of two classes: one from inheritance hierarchy and one from the interface.

When we create an abstract class, we are creating a base class that might have one or more completed methods but at least one or more methods are left uncompleted and declared abstract. If all the methods of an abstract class are uncompleted then it is same as an interface. The purpose of an abstract class is to provide a base class definition for how a set of derived classes will work and then allow the programmers to fill the implementation in the derived classes.

There are some similarities and differences between an interface and an abstract class that I have arranged in a table for easier comparison:

Feature

Interface

Abstract class

Multiple inheritance

A class may inherit several interfaces.

A class may inherit only one abstract class.

Default implementation

An interface cannot provide any code, just the signature.

An abstract class can provide complete, default code and/or just the details that have to be overridden.

Access Modfiers An interface cannot have access modifiers for the subs, functions, properties etc everything is assumed as public An abstract class can contain access modifiers for the subs, functions, properties
Core VS Peripheral

Interfaces are used to define the peripheral abilities of a class. In other words both Human and Vehicle can inherit from a IMovable interface.

An abstract class defines the core identity of a class and there it is used for objects of the same type.

Homogeneity

If various implementations only share method signatures then it is better to use Interfaces.

If various implementations are of the same kind and use common behaviour or status then abstract class is better to use.

Speed

Requires more time to find the actual method in the corresponding classes.

Fast

Adding functionality (Versioning)

If we add a new method to an Interface then we have to track down all the implementations of the interface and define implementation for the new method.

If we add a new method to an abstract class then we have the option of providing default implementation and therefore all the existing code might work properly.

Fields and Constants No fields can be defined in interfaces An abstract class can have fields and constrants defined

what technologies used for pinterest

From Paul Sciarra,

We use python + heavily-modified Django at the application layer.  Tornado and (very selectively) node.js as web-servers.  Memcached and membase / redis for object- and logical-caching, respectively.  RabbitMQ as a message queue.  Nginx, HAproxy and Varnish for static-delivery and load-balancing.  Persistent data storage using MySQL.  MrJob on EMR for map-reduce.

Oh, and Yash Nelapati would be unhappy if I didn't mention git.

2013年5月8日星期三

copy from Blog of Bruce Eckel

Computing Thoughts
Decorators I: Introduction to Python Decorators
by Bruce Eckel
October 18, 2008
Summary
This amazing feature appeared in the language almost apologetically and with concern that it might not be that useful.

ADVERTISEMENT
I predict that in time it will be seen as one of the more powerful features in the language. The problem is that all the introductions to decorators that I have seen have been rather confusing, so I will try to rectify that here.
(This series of articles will be incorporated into the open-source book Python 3 Patterns & Idioms).

Decorators vs. the Decorator Pattern

First, you need to understand that the word "decorator" was used with some trepidation, because there was concern that it would be completely confused with the Decorator pattern from theDesign Patterns book. At one point other terms were considered for the feature, but "decorator" seems to be the one that sticks.
Indeed, you can use Python decorators to implement the Decorator pattern, but that's an extremely limited use of it. Python decorators, I think, are best equated to macros.

History of Macros

The macro has a long history, but most people will probably have had experience with C preprocessor macros. The problems with C macros were (1) they were in a different language (not C) and (2) the behavior was sometimes bizarre, and often inconsistent with the behavior of the rest of C.
Both Java and C# have added annotations, which allow you to do some things to elements of the language. Both of these have the problems that (1) to do what you want, you sometimes have to jump through some enormous and untenable hoops, which follows from (2) these annotation features have their hands tied by the bondage-and-discipline (or as Martin Fowler gently puts it: "Directing") nature of those languages.
In a slightly different vein, many C++ programmers (myself included) have noted the generative abilities of C++ templates and have used that feature in a macro-like fashion.
Many other languages have incorporated macros, but without knowing much about it I will go out on a limb and say that Python decorators are similar to Lisp macros in power and possibility.

The Goal of Macros

I think it's safe to say that the goal of macros in a language is to provide a way to modify elements of the language. That's what decorators do in Python -- they modify functions, and in the case of class decorators, entire classes. This is why they usually provide a simpler alternative to metaclasses.
The major failings of most language's self-modification approaches are that they are too restrictive and that they require a different language (I'm going to say that Java annotations with all the hoops you must jump through to produce an interesting annotation comprises a "different language").
Python falls into Fowler's category of "enabling" languages, so if you want to do modifications, why create a different or restricted language? Why not just use Python itself? And that's what Python decorators do.

What Can You Do With Decorators?

Decorators allow you to inject or modify code in functions or classes. Sounds a bit like Aspect-Oriented Programming (AOP) in Java, doesn't it? Except that it's both much simpler and (as a result) much more powerful. For example, suppose you'd like to do something at the entry and exit points of a function (such as perform some kind of security, tracing, locking, etc. -- all the standard arguments for AOP). With decorators, it looks like this:
@entryExit
def func1():
    print "inside func1()"

@entryExit
def func2():
    print "inside func2()"
The @ indicates the application of the decorator.

Function Decorators

A function decorator is applied to a function definition by placing it on the line before that function definition begins. For example:
@myDecorator
def aFunction():
    print "inside aFunction"
When the compiler passes over this code, aFunction() is compiled and the resulting function object is passed to the myDecorator code, which does something to produce a function-like object that is then substituted for the original aFunction().
What does the myDecorator code look like? Well, most introductory examples show this as a function, but I've found that it's easier to start understanding decorators by using classes as decoration mechanisms instead of functions. In addition, it's more powerful.
The only constraint upon the object returned by the decorator is that it can be used as a function -- which basically means it must be callable. Thus, any classes we use as decorators must implement __call__.
What should the decorator do? Well, it can do anything but usually you expect the original function code to be used at some point. This is not required, however:
class myDecorator(object):

    def __init__(self, f):
        print "inside myDecorator.__init__()"
        f() # Prove that function definition has completed

    def __call__(self):
        print "inside myDecorator.__call__()"

@myDecorator
def aFunction():
    print "inside aFunction()"

print "Finished decorating aFunction()"

aFunction()
When you run this code, you see:
inside myDecorator.__init__()
inside aFunction()
Finished decorating aFunction()
inside myDecorator.__call__()
Notice that the constructor for myDecorator is executed at the point of decoration of the function. Since we can call f() inside __init__(), it shows that the creation of f() is complete before the decorator is called. Note also that the decorator constructor receives the function object being decorated. Typically, you'll capture the function object in the constructor and later use it in the __call__() method (the fact that decoration and calling are two clear phases when using classes is why I argue that it's easier and more powerful this way).
When aFunction() is called after it has been decorated, we get completely different behavior; the myDecorator.__call__() method is called instead of the original code. That's because the act of decoration replaces the original function object with the result of the decoration -- in our case, the myDecorator object replaces aFunction. Indeed, before decorators were added you had to do something much less elegant to achieve the same thing:
def foo(): pass
foo = staticmethod(foo)
With the addition of the @ decoration operator, you now get the same result by saying:
@staticmethod
def foo(): pass
This is the reason why people argued against decorators, because the @ is just a little syntax sugar meaning "pass a function object through another function and assign the result to the original function."
The reason I think decorators will have such a big impact is because this little bit of syntax sugar changes the way you think about programming. Indeed, it brings the idea of "applying code to other code" (i.e.: macros) into mainstream thinking by formalizing it as a language construct.

Slightly More Useful

Now let's go back and implement the first example. Here, we'll do the more typical thing and actually use the code in the decorated functions:
class entryExit(object):

    def __init__(self, f):
        self.f = f

    def __call__(self):
        print "Entering", self.f.__name__
        self.f()
        print "Exited", self.f.__name__

@entryExit
def func1():
    print "inside func1()"

@entryExit
def func2():
    print "inside func2()"

func1()
func2()
The output is:
Entering func1
inside func1()
Exited func1
Entering func2
inside func2()
Exited func2
You can see that the decorated functions now have the "Entering" and "Exited" trace statements around the call.
The constructor stores the argument, which is the function object. In the call, we use the __name__ attribute of the function to display that function's name, then call the function itself.

Using Functions as Decorators

The only constraint on the result of a decorator is that it be callable, so it can properly replace the decorated function. In the above examples, I've replaced the original function with an object of a class that has a __call__() method. But a function object is also callable, so we can rewrite the previous example using a function instead of a class, like this:
def entryExit(f):
    def new_f():
        print "Entering", f.__name__
        f()
        print "Exited", f.__name__
    return new_f

@entryExit
def func1():
    print "inside func1()"

@entryExit
def func2():
    print "inside func2()"

func1()
func2()
print func1.__name__
new_f() is defined within the body of entryExit(), so it is created and returned when entryExit() is called. Note that new_f() is aclosure, because it captures the actual value of f.
Once new_f() has been defined, it is returned from entryExit() so that the decorator mechanism can assign the result as the decorated function.
The output of the line print func1.__name__ is new_f, because the new_f function has been substituted for the original function during decoration. If this is a problem you can change the name of the decorator function before you return it:
def entryExit(f):
    def new_f():
        print "Entering", f.__name__
        f()
        print "Exited", f.__name__
    new_f.__name__ = f.__name__
    return new_f
The information you can dynamically get about functions, and the modifications you can make to those functions, are quite powerful in Python.

More Examples

Now that you have the basics, you can look at some more examples of decorators here. Note the number of these examples that use classes rather than functions as decorators.
In this article I have intentionally avoided dealing with the arguments of the decorated function, which I will look at in the next article.

2013年5月3日星期五

knowledge for installing speakers on nissan 2012

DIY Altima dash removal / radio replacement


Ok time to takle the altima dash.

1. Remove all cd's out of stock head unit

2. Disconnect the negative battery terminal under the hood

3. Using a pry tool work the air vents loose and remove them. Disconnect both the hazard harness and the air bag light. NOTE Remember to have you negative battery terminal off.

Click the image to open in full size.

Click the image to open in full size.

Click the image to open in full size.

4. After removing the vents this will expose 2 Philips screws silver in color remove them.

Click the image to open in full size.

5. Next reach under the center and pull a small cover off exposing 2 silver screws remove these as well.

Click the image to open in full size.

Click the image to open in full size.

6. You are now ready to remove the radio. Using both hands one at the top and one at the bottom. Start pulling towards you working back and fourth as well. There will be a few wiring harnesses you will have to disconnect after you get the radio out.

Click the image to open in full size.

7. Radio removed
Click the image to open in full size.

8. Fallow your instructions of your new dash kit.

9. Install in reverse order

Click the image to open in full size.

2011年8月7日星期日


1938年9月,中共中央政治局会议与会者合影。前排左起:康生、毛泽东、王稼祥、朱德、项英、王明;后排左起:陈云、博古、彭德怀、刘少奇、周恩来、张闻天。

2011年7月6日星期三

interactive learning

machine learning deals with the task of learning a function from observations of examples which have been labeled or unlabeled. This recovered function can be used to make predictions on the future new coming data.

However, most of previous ML algorithms do not interact with the environment, or other helpful resources that may improve the learning ability. A new topic appears recently, which is called interactive learning. Its idea has close connection with active learning and self-taught learning. The computer agent not only analyzes the data by utilizing its powerful computation ability, but also develops a kind of intelligent ability to actively seek new resources and interact with other objects in the world to improve learning ability. Human has this ability. When a baby is learning to speak, the first step he/she is trying to mimic the sound from his/her parents. At the same time, he/she can feel the feedback from the parents, such as appraise or disappointment. Based on such feedback, a baby will adjust his/her speaking. After the baby grows more mature, he/she is able to infer the intent of parents and proactively takes some action to attract parents or probe the feedback of parents.

Computer of course has larger advantage in computation capacity than human being, while it needs more advanced algorithms to become as intelligent as human being. That is an important purpose of artificial intelligence. The new research on interactive learning topic is challenging, while it is also very promising if we can develop some practical algorithms in this area.