**
Homework for Tuesday
01:27:500/10**
- Learning Objectives
- Homework
Tuesday - Big-O and Optimizations
06:31:560/23**
- Learning Objectives
- Lecture
- Practices
Homework for Wednesday
01:30:006/7**
- Learning Objectives
- Homework
Wednesday - Sorting Algorithms
05:46:341/14**
- Learning Objectives
- Practices
Homework for Thursday
00:30:001/3**
- Learning Objectives
- Homework
Thursday - Lists, Stacks, Queues
02:35:090/5**
- Learning Objectives
- Lecture
- Practices
Homework for Friday
00:15:000/3**
- Learning Objectives
- Homework
Friday - Heaps
02:50:540/6**
- Learning Objectives
- Lecture
- Practices
Homework for Next Monday
0/1**
**
Big-O Learning Objectives
Big-O Learning Objectives
- Catalog**
- Js Py Aug 2020 Online**
- Week 7 Aug 2020 Online**
- Big O Learning Objectives
Big O Learning Objectives
The objective of this lesson is get you comfortable with identifying the time and space complexity of code you see. Being able to diagnose time complexity for algorithms is an essential for interviewing software engineers.
At the end of this, you will be able to
- Order the common complexity classes according to their growth rate
- Identify the complexity classes of common sort methods
- Identify complexity classes of code
Did you find this lesson helpful?
No
Yes
✔ Mark As Complete
Finished with this task? Click Mark as Complete to continue to the next page!


@(user: models.User, activityList: List[models.ActivityRow]) @page {
Here is what your friends are doing.


Runs in the background, and can communicate with the foreground app.
More...
|
| struct | AppWorkerMessage |
| | Generic structure of a worker message that can be sent between an app and its worker. More...
|
| |
|
| enum | AppWorkerResult {
APP_WORKER_RESULT_SUCCESS = 0,
APP_WORKER_RESULT_NO_WORKER = 1,
APP_WORKER_RESULT_DIFFERENT_APP = 2,
APP_WORKER_RESULT_NOT_RUNNING = 3,
APP_WORKER_RESULT_ALREADY_RUNNING = 4,
APP_WORKER_RESULT_ASKING_CONFIRMATION = 5,
APP_WORKER_RESULT_SUCCESS = 0,
APP_WORKER_RESULT_NO_WORKER = 1,
APP_WORKER_RESULT_DIFFERENT_APP = 2,
APP_WORKER_RESULT_NOT_RUNNING = 3,
APP_WORKER_RESULT_ALREADY_RUNNING = 4,
APP_WORKER_RESULT_ASKING_CONFIRMATION = 5
} |
| | Possible error codes from app_worker_launch, app_worker_kill. More...
|
| |
| enum | AppWorkerResult {
APP_WORKER_RESULT_SUCCESS = 0,
APP_WORKER_RESULT_NO_WORKER = 1,
APP_WORKER_RESULT_DIFFERENT_APP = 2,
APP_WORKER_RESULT_NOT_RUNNING = 3,
APP_WORKER_RESULT_ALREADY_RUNNING = 4,
APP_WORKER_RESULT_ASKING_CONFIRMATION = 5,
APP_WORKER_RESULT_SUCCESS = 0,
APP_WORKER_RESULT_NO_WORKER = 1,
APP_WORKER_RESULT_DIFFERENT_APP = 2,
APP_WORKER_RESULT_NOT_RUNNING = 3,
APP_WORKER_RESULT_ALREADY_RUNNING = 4,
APP_WORKER_RESULT_ASKING_CONFIRMATION = 5
} |
| | Possible error codes from app_worker_launch, app_worker_kill. More...
|
| |
Runs in the background, and can communicate with the foreground app.
◆ AppWorkerMessageHandler [1/2]
Callback type for worker messages. Messages can be sent from worker to app or vice versa.
- Parameters
-
| type | An application defined message type |
| data | pointer to message data. The receiver must know the structure of the data provided by the sender. |
◆ AppWorkerMessageHandler [2/2]
Callback type for worker messages. Messages can be sent from worker to app or vice versa.
- Parameters
-
| type | An application defined message type |
| data | pointer to message data. The receiver must know the structure of the data provided by the sender. |
◆ AppWorkerResult [1/2]
Possible error codes from app_worker_launch, app_worker_kill.
| Enumerator |
|---|
| APP_WORKER_RESULT_SUCCESS | Success.
|
| APP_WORKER_RESULT_NO_WORKER | No worker found for the current app.
|
| APP_WORKER_RESULT_DIFFERENT_APP | A worker for a different app is already running.
|
| APP_WORKER_RESULT_NOT_RUNNING | The worker is not running.
|
| APP_WORKER_RESULT_ALREADY_RUNNING | The worker is already running.
|
| APP_WORKER_RESULT_ASKING_CONFIRMATION | The user will be asked for confirmation.
|
| APP_WORKER_RESULT_SUCCESS | Success.
|
| APP_WORKER_RESULT_NO_WORKER | No worker found for the current app.
|
| APP_WORKER_RESULT_DIFFERENT_APP | A worker for a different app is already running.
|
| APP_WORKER_RESULT_NOT_RUNNING | The worker is not running.
|
| APP_WORKER_RESULT_ALREADY_RUNNING | The worker is already running.
|
| APP_WORKER_RESULT_ASKING_CONFIRMATION | The user will be asked for confirmation.
|
◆ AppWorkerResult [2/2]
Possible error codes from app_worker_launch, app_worker_kill.
| Enumerator |
|---|
| APP_WORKER_RESULT_SUCCESS | Success.
|
| APP_WORKER_RESULT_NO_WORKER | No worker found for the current app.
|
| APP_WORKER_RESULT_DIFFERENT_APP | A worker for a different app is already running.
|
| APP_WORKER_RESULT_NOT_RUNNING | The worker is not running.
|
| APP_WORKER_RESULT_ALREADY_RUNNING | The worker is already running.
|
| APP_WORKER_RESULT_ASKING_CONFIRMATION | The user will be asked for confirmation.
|
| APP_WORKER_RESULT_SUCCESS | Success.
|
| APP_WORKER_RESULT_NO_WORKER | No worker found for the current app.
|
| APP_WORKER_RESULT_DIFFERENT_APP | A worker for a different app is already running.
|
| APP_WORKER_RESULT_NOT_RUNNING | The worker is not running.
|
| APP_WORKER_RESULT_ALREADY_RUNNING | The worker is already running.
|
| APP_WORKER_RESULT_ASKING_CONFIRMATION | The user will be asked for confirmation.
|
◆ app_worker_is_running()
| bool app_worker_is_running |
( |
void |
| ) |
|
Determine if the worker for the current app is running
- Returns
- true if running
◆ app_worker_kill()
Kill the worker for the current app. Note that this is an asynchronous operation, a result code of APP_WORKER_RESULT_SUCCESS merely means that the request was successfully queued up.
- Returns
- result code
◆ app_worker_launch()
Launch the worker for the current app. Note that this is an asynchronous operation, a result code of APP_WORKER_RESULT_SUCCESS merely means that the request was successfully queued up.
- Returns
- result code
◆ app_worker_message_subscribe()
Subscribe to worker messages. Once subscribed, the handler gets called on every message emitted by the other task (either worker or app).
- Parameters
-
| handler | A callback to be executed when the event is received |
- Returns
- true on success
◆ app_worker_message_unsubscribe()
| bool app_worker_message_unsubscribe |
( |
void |
| ) |
|
Unsubscribe from worker messages. Once unsubscribed, the previously registered handler will no longer be called.
- Returns
- true on success
◆ app_worker_send_message()
Send a message to the other task (either worker or app).
- Parameters
-
| type | An application defined message type |
| data | the message data structure |


Mirage v0.2.0-beta.9 has been released. Check out the release notes for the breaking changes and enhancements.
I wanted to jot down some of my recent thoughts while putting this release together. Pardon the rambling.
Originally I had planned for beta.9 to be the last beta release before cutting 0.2. Since folks have started using the 0.2 beta series, however, pain points around data modeling have been cropping up. In particular, dealing with has-one
and many-to-many
associations is quite difficult with the current set of abstractions.
My first thought was to ship 0.2 as is, and then work on adding helpers for hasAndBelongsToMany
and hasOne
. After some more thought & discussions with various users, I realized that the ORM’s abstractions might be a touch off. Let me explain.
Mirage’s ORM was built to support features like JSON:API includes and the planned factory relationships. The ORM is a way to encode association information, since there was no good place to do this in v0.1
. My approach was to largely mimic server-side frameworks like Rails, since they’ve already solved this problem. After all, your models already live on the backend in database tables, so why not use the same concepts? Tables with foreign keys are familiar to backend devs, so let’s just emulate those concepts in Mirage.
So, that’s been the plan so far. The ORM has working hasMany
and belongsTo
associations, and those take care of many cases. The manyToMany
case is interesting, though, because there’s not necessarily a standard conventional way that all Ember developers or servers approach this problem.
Take a simple belongsTo
, like a post
that belongs to an author
. The post
probably owns the foreign key, something like author_id
. Persisting this relationship, then, is as simple as saving any other attribute on the post
:
PUT /api/posts/1
{
post: {
id: 1,
title: 'Hipster ipsum',
author_id: 24
}
}
author_id
is all that’s needed to tell both Ember Data and the server about the new relationship.
hasMany
is where things start to get tricky. Let’s assume we’ve also defined the inverse of the above relationship, so an author
has many posts
. If you updated an author with new posts, how would you persist those new relationships?
As above, the foreign key on each post
is all that’s needed to tell both the frontend and the backend about the new relationship, so typically I would handle it like this:
post1.set('author', author);
post1.save();
post2.set('author', author);
post2.save();
and so on. You can write code that batches these requests, but the point here is that this is pretty straightforward stuff. Persisting a relationship is just boring old CRUD on a resource.
Interestingly, the Ember Data guides show code that suggests persisting a hasMany
relationship by calling save
on the parent, which looks something like this:
author.get('posts').pushObjects([post1, post3]);
author.save();
Now, Ember Data can understand this, and in fact this is how some teams work. But what does the request/response look like? Maybe something like
PUT /authors/1
{
author: {
id: 1,
name: 'Frank',
post_ids: [1, 3]
}
}
This is a request to update a single author
resource - but behind the scenes, is your backend actually updating the foreign keys on two different post records? If so, we’ve kind of moved out of the realm of doing boring CRUD on resources, because now our server is doing something different or more than what we asked of it: we asked it to update the author:1
resource, and in reality it’s updating two other post
resources. Interestingly I’ve asked several folks in the community how they deal with this issue, and the response varies.
The story gets even trickier with many-to-many relationships. Sometimes people model the join record in their Ember apps, sometimes they don’t. If they don’t, a PUT to an author
resource could actually be creating multiple server resources behind the scenes, via a join table.
This obviously has implications for Mirage, which works best with conventional server endpoints. A PUT to a resource updates that resource, and so on. But plenty of people write their servers this way, and it got me thinking: perhaps database tables and foreign keys are the wrong abstraction for Mirage to emulate. Perhaps transport of HTTP resources is a bit more generic and abstract than that.
Take, for example, the following Ember Data model definitions:
// models/post.js
export default DS.Model.extend({
categories: DS.hasMany();
});
// models/category.js
export default DS.Model.extend({
name: DS.attr()
});
That is a perfectly valid and legitimate domain model. By looking at those two models, can you tell me which entity owns the foreign key? Nope. In fact, you don’t even know if this is a one-to-many or many-to-many relationship. And yet, from the perspective of HTTP resources (including a valid implementation of a JSON:API server), this is totally valid.
Here’s the JSON:API response, for example:
GET /posts/1?include=categories
{
data: {
type: 'posts',
id: 1,
relationships: {
categories: [
{
data: {
type: 'categories',
id: '2'
}
},
{
data: {
type: 'categories',
id: '5'
}
}
]
}
},
included: [
{
type: 'categories',
id: '2',
attributes: {
name: 'Economics'
}
},
{
type: 'categories',
id: '5',
attributes: {
name: 'Programming'
}
}
]
}
Totally valid, and also impossible to ascertain whether this is a one-to-many or many-to-many relationship.
Basing Mirage’s ORM on database tables and foreign keys makes some things really easy and familiar, but for these situations it’s a pain. If your actual Ember app and your actual server can handle a request like
PUT /posts/1
{
post: {
id: 1,
tag_ids: [1, 4]
}
}
just fine, you shouldn’t have to add extra logic or models to make your fake Mirage server work.
The solution I have in mind for this problem is to replace the foreign key implementation with an associations map. This map will be a singleton that all models will have a reference to, and it will be used to persist model relationships.
The external API of Mirage’s ORM won’t change. For example, say you had a author
that has many posts
:
// mirage/models/author.js
export default Model.extend({
posts: hasMany()
});
// mirage/models/post.js
export default Model.extend({
});
Currently (in 0.2.0-beta.9), Mirage makes an assumption here that the post
resource has an author_id
foreign key. As we’ve just shown, this is potentially a false assumption. My previous plan was to write a hasAndBelongsToMany
helper for many-to-many relationships. Then, if this relationship turned out to be a many-to-many, the user would need to do something like the following:
// mirage/models/author.js
export default Model.extend({
posts: hasAndBelongsToMany()
});
This would tell Mirage to transparently create a author-post
join table, and deal with the persistence there.
Again, this now feels like the wrong abstraction, and it also introduces concepts that aren’t necessarily appropriate for the domain of the frontend. Instead, the original domain model with the hasMany
declaration will add an author.posts
key to the singleton associations map, where all the relationship data can be stored. This has an added benefit of simplifying Mirage’s interface for creating relationships in factories and elsewhere, as now developers will be able to do things like
let author = server.create('author', {
categoryIds: [1, 3]
});
in their tests, similar to what they’re used to doing in Ember Data. We can also make Mirage’s shorthands understand both forms of saving hasMany
relationships, since the ids on the models will just be pointers to the associations map. Serializers can be used to customize which ids are sent along with the response.
This change will also make it easier to ascertain all model information from an existing set of Ember Data models in the future. I’m confident the overall learning curve will be easier and resulting code will be cleaner.
While this will take a bit more time to get right, I think it’s important. I also feel like I have a better grasp of something important, namely that Mirage as an HTTP faking layer should not necessarily emulate various server abstractions, but rather focus on concepts that come from HTTP. It turns out that single-owner foreign keys is not one of those concepts, and therefore this abstraction does not belong in Mirage.
I’ll probably release 0.2, and work the associations map into a 0.3 release. Still thinking this through, though.
My closing thought is that these HTTP concepts are crucial to understand if you’re going to write an Ember app, and they can’t just be left to the backend team. It’s true that a frontend developer doesn’t need to know that Rails has a has_and_belongs_to_many
method that abstracts away join tables on many-to-many relationships; however, the developer does need to understand how her Ember app will retrieve and persist many-to-many relationships across the network. Domain modeling and HTTP transport is a central part of Ember development and unfortunately at the moment, many parts of it are still non-standard and unconventional.


60
Rs.{{ currentQuestion.amountExtra }}
×
Game finished
Game is completed…
×
Game over
Couldn't finish in time…
×
Select two options
Option A
Option B
Option C
Option D


Interfaces
SchemaTransformer
XSAnnotation
XSAny
XSAppinfo
XSAtomicType
XSAttributable
XSAttribute
XSAttributeGroup
XSComplexType
XSContentHandler
XSDocumentation
XSElement
XSEnumeration
XSGroup
XSIdentityConstraint
XSKeyRef
XSListType
XSModelGroup
XSNotation
XSObject
XSObjectFactory
XSOpenAttrs
XSParticle
XSSchema
XSSimpleContentType
XSSimpleType
XSType
XSUnionType
XSWildcard |


Looping with ng-repeat:
This is a link
Here is some more information about this product that is only revealed once clicked on.


#! /usr/bin/env python """ chi2.py (C) 2004 by Damir Cavar<EMAIL_ADDRESS>License: This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. http://www.gnu.org/licenses/gpl.txt chi2-test chi2-value = sum over (Observation - Expectation)^2/Expectation Observation = found frequency Expectation = expected frequency """ from math import pow class Chi2: # Probability probs = (0.99, 0.95, 0.05, 0.01, 0.001) # by df table = { 1:(0, 0.004, 3.84, 6.64, 10.83), 2:(0.02, 0.103, 5.99, 9.21, 13.82), 3:(0.115, 0.352, 7.82, 11.35, 16.27), 4:(0.297, 0.711, 9.49, 13.28, 18.47), 5:(0.554, 1.145, 11.07, 15.09, 20.52), 6:(0.872, 1.635, 12.59, 16.81, 22.46), 7:(1.239, 2.167, 14.07, 18.48, 24.32), 8:(1.646, 2.733, 15.51, 20.09, 26.13), 9:(2.088, 3.325, 16.92, 21.67, 27.88), 10:(2.558, 3.94, 18.31, 23.21, 29.59), 11:(3.05, 4.58, 19.68, 24.73, 31.26), 12:(3.57, 5.23, 21.03, 26.22, 32.91), 13:(4.11, 5.89, 22.36, 27.69, 34.53), 14:(4.66, 6.57, 23.69, 29.14, 36.12), 15:(5.23, 7.26, 25, 30.58, 37.7), 16:(5.81, 7.96, 26.3, 32, 39.25), 17:(6.41, 8.67, 27.59, 33.41, 40.79), 18:(7.02, 9.39, 28.87, 34.81, 42.31), 19:(7.63, 10.12, 30.14, 36.19, 43.82), 20:(8.26, 10.85, 31.41, 37.57, 45.32), 21:(8.9, 11.59, 32.67, 38.93, 46.8), 22:(9.54, 12.34, 33.92, 40.29, 48.27), 23:(10.2, 13.09, 35.17, 41.64, 49.73), 24:(10.86, 13.85, 36.42, 42.98, 51.18), 25:(11.52, 14.61, 37.65, 44.31, 52.62), 26:(12.2, 15.38, 38.89, 45.64, 54.05), 27:(12.88, 16.15, 40.11, 46.96, 55.48), 28:(13.57, 16.93, 41.34, 48.28, 56.89), 29:(14.26, 17.71, 42.56, 49.59, 58.3), 30:(14.95, 18.49, 43.77, 50.89, 59.7) } def getChi2Value(self, sample, expectation): """Calculate the t-test value for a sample.""" chi2 = 0.0 for x in range(len(sample)): for i in range(len(sample[0])): chi2 += pow(float(sample[x][i] - expectation[x][i]), 2) / float(expectation[x][i]) return chi2 def getDF(self, sample): """Returns the degree of freedom.""" return (len(sample) - 1) * (len(sample[0]) - 1) def getSignificance(self, chi2value, df): """Returns the probability = significance value for the tvalue, given the df.""" if df > len(self.table.keys()): df = max(self.table.keys()) scores = self.table[df] for i in range(len(scores)): if scores[i] > chi2value: i = i - 1 break if i == -1: return 1.0 else: return self.probs[i] def isSignificant(self, sample, expectation, level): """Returns the significance of the difference between two samples.""" val = self.getSignificance(self.getChi2Value(sample, expectation), self.getDF(sample)) if val <= level: return True return False if __name__ == "__main__": # some example sample = [(161, 59, 58), (23, 21, 29)] expectation = [(60, 60, 60), (20, 20, 20)] # H0 = equal proportions myChi2 = Chi2() df = myChi2.getDF(sample) chi2 = myChi2.getChi2Value(sample, expectation) significance = myChi2.getSignificance(chi2, df) print "Sample", sample print "Expectation = H0:", expectation print "chi2-test:\nchi2 =", chi2 print "df =", df print "Is significant: (0.05)", myChi2.isSignificant(sample, expectation, 0.05) # print "Alpha level exceeded", significance


|
fop 1.1 | |||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.apache.fop.fo.properties.CommonHyphenation
public final class CommonHyphenation
Store all common hyphenation properties. See Sec. 7.9 of the XSL-FO Standard. Public "structure" allows direct member access.
| Field Summary | |
|---|---|
StringProperty |
country
The "country" property |
EnumProperty |
hyphenate
The "hyphenate" property |
CharacterProperty |
hyphenationCharacter
The "hyphenation-character" property |
NumberProperty |
hyphenationPushCharacterCount
The "hyphenation-push-character-count" property |
NumberProperty |
hyphenationRemainCharacterCount
The "hyphenation-remain-character-count" property |
StringProperty |
language
The "language" property |
StringProperty |
script
The "script" property |
| Method Summary | |
|---|---|
boolean |
equals(java.lang.Object obj)
|
char |
getHyphChar(Font font)
Returns the effective hyphenation character for a font. |
int |
getHyphIPD(Font font)
Returns the IPD for the hyphenation character for a font. |
static CommonHyphenation |
getInstance(PropertyList propertyList)
Gets the canonical CommonHyphenation instance corresponding
to the values of the related properties present on the given
PropertyList |
int |
hashCode()
|
| Methods inherited from class java.lang.Object |
|---|
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
|---|
public final StringProperty language
public final StringProperty country
public final StringProperty script
public final EnumProperty hyphenate
public final CharacterProperty hyphenationCharacter
public final NumberProperty hyphenationPushCharacterCount
public final NumberProperty hyphenationRemainCharacterCount
| Method Detail |
|---|
public static CommonHyphenation getInstance(PropertyList propertyList) throws PropertyException
CommonHyphenation
instance corresponding
to the values of the related properties present on the given
PropertyList
propertyList
- the PropertyList
PropertyException
- if a a property exception occurspublic char getHyphChar(Font font)
font
- the font
public int getHyphIPD(Font font)
font
- the font
public boolean equals(java.lang.Object obj)
equals
in class java.lang.Object
public int hashCode()
hashCode
in class java.lang.Object
|
fop 1.1 | |||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |


{% extends 'base.html' %} {% block content %} List of Products {% for product in products %} {{ product.title }} | Edit Product | Delete Product {% endfor %} Other Links Add a Product: Click here to add a product. Reset Password: Click here to reset the password. {% endblock %}


|
textarea A textarea gadget handle
start The 0 based index of the first character to retrieve. count The number of characters to retrieve |
|
Retrieves some or all of the text in a textarea gadget.
If start and count are ommited, the entire text is returned. If count is ommited, all text from the specified start index is returned. |


Timeline Viewer
Detail
Labs
Plan of Care
Jun 2,2007
Chest X-Ray
Jun 1,2007
Instructions:
Office consultation
Consultation with Dr.George


| As an application developer at Mojo Networks developed Wi-Fi Analyzer application for Wifi Channel planning , implementation and optimization. Dynamically analyzes Wi-Fi environment. Includes features like Wifi Scanner(SSID ,BSSID), Channel Interference Analyzer, Wi-Fi Channel Graph (number of users present in a particular channel according to their RSSI dBm strength ) and recommendation view (2.4GHz and 5 GHz . | Nothing here | Nothing here |
Senior undergraduate student in Electronics and Communication Engineering in Indian Institute of Information Technology , Allahabad .
I am interested in Wireless Domain , Development Expereience ( Android & Web Based ) , IOT arena , Hacking , Computer Vision (VR or AR based concepts ) ,Game Development..
Updates !! [Click on Highlighted text]
August 2016 : Attended Wi-Fi Knowledge Summit held at ICSR, IIT Madras.
August 2016 : Now I am working as a Research Associate at Wireless Network Lab, Dept of Electrical Engineering , IIT Madras under the supervision of Prof. Venkatesh Ramaiyan.
July 2016 : Internship offer from LVP Mitra- MIT Media Lab at Center for Innovation for Engineering the Eye 2016.
June 2016 : Shortlisted for Techngage_Pune hackathon organized by NASSCOM at Persistent Systems ,Pune.
June 2016 : Selected for Summer Academy, Make School (Singapore) Enrolled in ios development (Swift) Summer Academy, Singapore Apps Track.
May 2016 : Shortlisted for Rise_Hackathon for Stage II. Build & ( Deploy or Die ).
May 2016 : Selected for AngelHack event at Bombay Stock Exchange ,Mumbai. Winner of HPE HAven OnDEmand Challenge held at Angelhack Mumbai.
January 2016 :Worked with Mojo Networks on developing algorithm for Optimal Wireless Access Point Placement for Location Dependent Applications.
Life @ Mojo : Come Check Out the Next Best Thing in Wi-Fi@ Mojo Networks!
December 2015 :Awarded Best Project Award for 7th Semester titled " Automation using IOT technology " at IIIT Allahabad.
August 2015 : Selected for hackinout event at NIT Surat.
January 2015 : Selected for MIT Media Lab Design Innovation Workshop 2015.


{%include 'header.html' %} {%include 'menu.html' %}
"I write scripts to serve as skeletons awaiting the flesh and sinew of images." - Ingmar Bergman quotes from BrainyQuote.com
Shake now


 It lets users find
when their friends are on a break between uni classes, allowing them to quickly find friends who are free to hangout with.
NOTE: as of 19/03/2017, SyncUQ is still under construction. A full release will be avaliable in late May 2017.
How
SyncUQ runs on the heroku platform, it uses a Python backend (using the flask framework) and utilises SQLAlchemy as an ORM to a postgres database. The front end is written in PureScript, a strongly typed lang which compiles to html/css/js.
Why
SyncUQ was made by myself, Max Bo, and Hugo Kawamata. It was conceived after we all realised how often we ask each other "are you free?" or "you at uni?". We pitched it to a few classmates who all agreed that it would be an awesome app, after this we got to work.
DUXCOM
August 2016 - November 2016
What
Duxcom is an open source, isometric, turn based, medieval duck themed video game
How
The game was made using a plethora of technologies, utilising test driven development and continuous integration . Throghout the project I wrote all my code in Java (with a bit of JSON) , and used the tools: Git (for version control), Jenkins (to assist with continous integration), and SonarQube (for ensuring clean code). I also assisted with some graphic design work.
Why
The project was a part of the course, DECO2800. I chose the subject because I wanted first hand experience in the software development lifecycle, and boy did I get it...
Richard Groves Architects
November 2016 - February 2017
What
www.richardgrovesarchitects.com
A website designed to showcase the skills and work of the company.
How
richardgrovesarchitects.com was written from scratch using HTML5, CSS, and JS(jquery). The navbar was from bootstrap. SEO was performed, and I managed to integrate his business into facebook and google.
Why
My dad needed a website made for his architecture firm. His old website was extremely outdated and he had
absolutely no digital presence.
Being the good son I am, I made him one. I worked closely with him throughout the entire design
process, adhearing to his every requirment. I drew many, many paper prototypes until a design he liked
was found.
The website took over 40 hours to make (most of which was redesigning parts he didn't like).
I learnt a lot throughout the design process, primarily, how important the requirements/prototyping portion
of software development. One miscommunication during that phase can lead to a lot of clean up down the
road...
Tetris
March 2016 - May 2016
What
A remake of the classic game tetris on an atmel 74HC chipset. The game contained features such as high score tracking, 8 bit sound, and joystick support
How
The game was written in C using the atmel studio IDE.
Why
The game was made as part of the assement for an embedded systems programming course. A breadboard and chipset were given to us along with some basic boilerplate code. From this we had a few weeks to implement as many features as we could.
This Website
June 2017 - Present
What
You're looking at it :)
How
This website was written from scratch using HTML5, CSS, and JS. Everything was written without a framework/template aside from the navbar which is from bootstrap
Why
This website started as a side project around august 2016, I had just finished a web design course and wanted
to put my skills to the test.
It started out not that great. But as my skills got better I redesigned it over and over again until I was satisfied. This website will continue to evolve with my skills so checkback in a year or two to see something hopefully pretty amazing.
This websites primary goal was and still is to be a kind of digital hub of things i've made. It's goal has evolved since then to be more of a digital resume.


Academic Qualifications
- PhD (Pursuing) DA-IICT Gandhinagar
- MTech, GGSIPU Delhi
Email<EMAIL_ADDRESS>Phone : +91-8000086132
Research Interests
Information security and privacy, access control, key management, cloud security.
Work Experience
| Jul 2015 onwards |
Faculty Associate at APJ. |
| Mar. 2013 - Jun. 2015 |
Teaching Assistant at DAIICT, Gandhinagar, Gujarat.
Taken independent course of "OOPs using Java" in MDes programme.
|
| Oct. 2009 - Mar. 2013 |
Research Associate, DA-IICT, Gandhinagar, Gujarat.
Worked on Indo-Japan co-operative project sponsored by DST, Govt. of India.
Title: "Security proofs and multidisciplinary evaluation for dynamic hierarchical key
assignment schemes."
|
| Mar. 2007 - Oct. 2009 |
Assistant Professor, Galgotias College of Engg. & Tech., Gr. Noida, India. |
| Oct. 2004 - Mar. 2007 |
Senior Lecturer, IEC College of Engg. & Tech., Gr. Noida, India |
| Aug. 2001 - May 2004 |
Lecturer, Kalka Institute for Research and Advanced Studies, New Delhi, India. |
Publications
Journals
- Anil Mundra, Naveen Kumar, Anish Mathuria and Manik Lal Das. "Detecting flaws in dynamic
hierarchical key management schemes using specification animation". CSI Journal of Computing,
vol. 1, No. 02, pp. 73-79, ISSN 2277-6702, 2012. Link:
"http://www.csijournal.org/luitdox-saas/publications/ Article-9-1-2-75-82.pdf"
- Anil Mundra, Naveen Kumar, Anish Mathuria, T. Matsuda and K. Matsuura. "Two views on
hierarchical key assignment schemes". Security Management, Journal of Japan Society of Security
Management, Vol. 25, No. 3, pages 40-51, March 2012.
Conferences/Workshops
- Naveen Kumar, Anish Mathuria and Maniklal Das. "Achieving Forward Secrecy and Unlinkability in
Cloud-based Personal Health Record System". Accepted in "14th IEEE International Conference on
Trust, Security and Privacy in Computing and Communications" (IEEE TrustCom'15), Helsinki,
Finland, 20-22 August, 2015.
- Naveen Kumar, Anish Mathuria and Maniklal Das. "Comparison of Key Management Hierarchies for
Access Control in Cloud". "Third International Symposium on Security in Computing and
Communications" (SSCC'15), SCMS Kerala, 10-13 August, 2015.
- Naveen Kumar, Anish Mathuria, Maniklal Das and Kanta Matsuura. "An Efficient Time-Bound
Hierarchical Key Assignment Scheme". Ninth International Conference on Information Systems
Security (ICISS'13), ISI Kolkata, 16-20 December, 2013.
- Naveen Kumar, Anish Mathuria, Manik Lal Das and Kanta Matsuura. "Improving Security and
Efficiency of Time-Bound Access to Outsourced Data". Sixth ACM India Computing Convention: Next
generation information, computing and security (Compute'13), VIT University, Vellore, 2013.
- Anil Mundra, Naveen Kumar, Anish Mathuria, Takahiro Matsuda, and Kanta Matsuura, "A Killer
Application of Dependent Key Assignment Schemes: Secure Outsourced Data on Cloud", Sixth
International Workshop on Security (IWSEC), Tokyo Japan, November 2011.
- Naveen Kumar, Anish Mathuria and Manik Lal Das. "On Classifying Indirect key Assignment Scheme
for Hierarchical Access Control". Proceedings of Tenth National Workshop on Cryptology, PSG
college of Technology, Coimbatore and CRSI, India, pages 133-139, ISBN:978-81-907929-4-3,
September 2010.
Additional Information
International exposure
- Oct-Dec 2012 Matsuura Lab, Institute of Industrial Science, Univ. of Tokyo, Japan.
- Jan-Mar 2010 Matsuura Lab, Institute of Industrial Science, Univ. of Tokyo, Japan.
Reviewer/Program committee member
ICCCA2015, ICCCS2015, ICCCA2016.
Major Subjects Taught
Data Structures, Design and Analysis of Algorithms, Computer Graphics, Introduction to Cryptography,
Automata theory, Computer Networks, Object Oriented Programming.


Germany and allies mark 30 years since the Berlin Wall fell
Germany is marking 30 years since the Berlin Wall fell, a pivotal moment in the events that brought down Communism in eastern Europe.
Leaders from Germany and other European nations are attending ceremonies on Saturday in Berlin recalling the peaceful protests that piled pressure on East Germany’s government to allow its citizens free passage to the west on November 9 1989.
The main commemoration is being held at Bernauer Strasse, where one of the last parts of the wall that divided the city for 28 years still stands.
Light installations, concerts and public debates are also being held throughout the city and other parts of Germany to mark the anniversary.
READ MORE
Armed gardaí and riot squad deployed in Cork following public order concerns last night


Hard Rain (1998) Christian Slater, Morgan Freeman, Randy Quaid, Minnie Driver, Betty White. Directed by Mikael Salomon. 2.5 stars (out of five stars)
Review by Ed Johnson-Ott, NUVO Newsweekly www.nuvo-online.com/film/ Archive reviews at http://us.imdb.com/M/reviews_by?Edward+Johnson-ott
It would be easy to dismiss the entertaining, but decidedly lightweight action film "Hard Rain" as mere fluff, were it not for the memories of last summer's dreadful "Speed 2: Cruise Control." That leaden monstrosity served as a primer on how to screw up an action movie.  Conversely, "Hard Rain" takes a simple concept and turns it into an unassuming, efficient action film. Sure, you'll probably forget about it an hour or so after you've left the theater, but at least you'll have a good time while you're in there.
Set in Huntingburg, Indiana, "Hard Rain" is about an armored car heist and a whole lot of water. After flood waters force the evacuation of the small town, the local sheriff (Randy Quaid) and his deputies patrol by boat, searching for any local stragglers and keeping an eye out for looters. Meanwhile, an armored car breaks down on the outskirts of town, stranding drivers Tom (Christian Slater) and his Uncle Charlie (Ed Asner. ) A radio call for help results in the arrival of Jim (Morgan Freeman) and his crew, but their goal isn't assistance. They want the armored car's treasure, $3 million in cash. When the "rescue team" opens fire, Tom snatches the money and takes off on foot into the ever-deepening waters. The chase is on, with everyone pursuing Tom. Shifting allegiances and some snazzy action sequences keep the proceedings lively, as the flood waters continue rising higher and higher.
Water is notoriously hard to handle, so the creators of "Hard Rain" moved the production into a contained environment, building an extremely detailed replica of Huntingburg in a massive aircraft hangar in Palmdale, California. 50 wooden buildings were set in a tank two football fields long and one football field wide. Behind the faux downtown setting, the largest backdrop ever made, 72-feet high and 2,000 feet long, completed the Huntingburg re-creation. Then the whole set was flooded with five feet of water, deep enough for the actors to flail about convincingly, but shallow enough to allow them to find their footing when necessary. To simulate the rising floodwaters, the filming was divided into several stages. At the end of each sequence, all of the structures were lifted into the air, allowing crew members to cut away the bottom portions of the buildings. When the sets were lowered, the illusion of rising waters was complete. Ultimately, flood waters 16 feet deep were simulated for the production.
After finishing 75 days of shooting on the Palmdale set, the crew finally moved to the real Huntingburg, for a week of outdoor location filming. For the first time in Indiana history, a highway was closed to traffic for filming, as sandbags were placed at the junction of Interstate 231 and Main Street, which was then covered with a few inches of water to simulate the early stages of the flood.
"Hard Rain" was originally called "The Flood" and was scheduled for release last summer, but the film was pulled from the schedule and the name changed due to fears it would be mistaken as a disaster movie. In press materials, producer Mark Gordon stressed the difference between "Hard Rain" and a disaster film. "In those type of stories, the twister, flood or volcano serves as the antagonist. In our picture, Morgan Freeman is the antagonist, Christian Slater is the protagonist and we play out the action against the flood."
The action gets pretty spectacular, highlighted by two particularly nice set pieces; a jet ski chase through the flooded halls of a school, and a nifty dual speedboat crash through the stained-glass windows of a church. The acting isn't bad, either. Christian Slater mercifully avoids his chronic Jack Nicholson impersonation, underplaying Tom in straightforward heroic fashion. Morgan Freeman is grimly effective as the very focused leader of the bad guys, and Randy Quaid puts his snarky qualities to good use as the town's morally ambiguous sheriff. Minnie Driver, excellent in "Good Will Hunting," has a minor, but pleasing turn as a restoration expert who reluctantly gets drawn into the action, and Betty White makes an amusing cameo appearance as a feisty local who refuses to vacate her home.
Despite the qualifications of the cast, don't look for any deep personal insights. Like its storyline, the characters in "Hard Rain" are streamlined; archetypal players making fast decisions in a volatile situation. "Hard Rain" is simply an action movie, but it has a certain elegance because of its lack of bombast or pretension. They're just trying to show us a good time here and, bless their little hearts, that's exactly what they do.
copyright 1998, Ed Johnson-Ott
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


{% extends "layout.html" %} {% set staticpage = True %} {% set title = _('Examples') %} {% block body %}
Below are some examples to illustrate the possibilities and extensive configurability of twyg. All examples were generated by simply combining the built-in configurations and colorschemes. Every built-in configuration is shown with three different colorschemes.
You can recreate all images on this page by running the script
docs/examples/generate-samples.sh
in the distribution package.
The example JSON data can be found in the example-data
directory.


element of Hypertext Markup Language
The Semantic WebThis direction of development of the World Wide Web, the aim of which is to provide information in a form suitable for machine processing
| IE | Firefox | Chrome | Safari | Opera | iOS Safari | Opera Mini | Android Browser | Chrome for Android |
|---|---|---|---|---|---|---|---|---|
| 27 | ||||||||
| 31 | 2.3 | |||||||
| 8 | 33 | 4 | ||||||
| 9 | 34 | 5.1 | 4.1 | |||||
| 10 | thirty | 35 | 6.1 | 6.1 | 4.3 | |||
| eleven | 31 | 36 | 7 | 23 | 7.1 | 7 | 4.4 | 36 |
| Method of displaying text images before or after the given element's contents using the: before and after pseudo-elements |


---
layout: default
title: Schedule
---
Schedule
Note: Each student
will contribute and tag one quantitative
graphic, with an explanation of its appeal, every week, by
Monday at midnight. Instructions for how and where to upload will be provided
during the first week of class. The list below only includes any special instructions about a particular week’s graphics. Please note that one graphic is
required every week. Click on dates below for slides and other files mentioned in class.
Week 1: Introduction to Data Visualization + Origins of Modern Epidemiology
- 1/28 TIntroduction, with a Brief History of Quantitative
Graphics
- 1/30 ThSaved by the Beer (How modern epidemiology evolved from John Snow’s work on
cholera.)
- Sectionspecial
sessions scheduled tofamiliarize students with software
tools
- ReadingsTufte VDQI Chapter 1,; account of cholera epidemic
in Tufte pamphlet on “Visual and Statistical Thinking”
- Homeworksubmit your
first quantitative graphic; this week choose one in a field that particularly
interests you
Week 2: Show Me the Numbers, with Style
- 2/4 TPart 1 Discussion of student interests, based on
student-contributed graphics; Part 2
QuickIntroduction to Edward Tufte’s Design Principles, using relevant historical and modern examples; Part
3 Demonstrations of Relevant
Software
- 2/6 ThGraph’s Anatomy —dissecting the elements of a simple graph to understand their value and
how choices about style influence import
beaed
graphics)
- ReadingsTufte VDQI
Chapter 2, 3, 4, Yau, as-needed
- Homework
Project Set 1, ”Health”:
Re-imaging John Snow’s Cholera Map (distributed, due 2/17)
Week 3: Style and Truth
- 2/11 T
Style ↔ Substance—how can good design
let us “show the numbers”? (Data-Ink ratio; Chartjunk; Static vs.
Interactive)
- 2/13 Th
Showing Scale, Relative and
Absolute
- SectionPowers of 10
Video, and how one might re-make it today (show/discuss
alternatives). What were design choices? Did technology of 1977 limit options
in any important ways?
- Readings Tufte VDQI
Chapter 5, 6, 7, Yau, as-needed
- Homework find
specifically “infographics”
for next week’s section
Week 4: Statistics and Linked Views
- 2/18 T
Ranks and Distributions
- 2/20 ThGUEST LECTURE on Linked Views (Chris Beaumont)
- Section “Infographics”— how quantitative are they? Are they useful?
(using student examples)
- Readings TufteVDQI Chapter 8, 9, and Epilogue
-
HomeworkProject Set 1 due 2/17
Project Set 2: Design Reviews & Statistical Display Challenges
(distributed, due 3/10)
Week 5: Show me the Numbers (but How Much is Too Much?!)
- 2/25 TThe Lie Factor
- 2/27 Th
Human Cognition(featuring GUEST SPEAKER Michelle Borkin--at Radcliffe Meeting)
- Section Discussion of
student Project Proposals; mid-semester evaluation discussion
- Readings Yau, as-needed,
plus finish Tukey article
- Homework(draft) Project Proposal
due 2/25;submit final proposal online by
2/27
Week 6: Maps & GIS
- 3/4 T
Maps and Geometric Projection(“Art” andgeometry)
- 3/6 Th
Geographic Information Systems (including SIM City & ESRI)
- Section Geometry
Review
- Readings Yau, as-needed,
plus WATCH "An Inconvenient Truth" on Amazon Instant Video or YouTube (either is $2.99)
Reference material on map projections: http://www.progonos.com/furuti/MapProj/Normal/CartHow/cartHow.html.
- Homework Project Set 2
due 3/10;
Week 7: Crowdsourcing and Reaching the Right Audience(s)
- 3/11 TGUEST LECTURE on Many
Eyes and interactive visualization
strategies, Martin Wattenberg & Fernanda Viegas
(Google)
- 3/13 Th
Live Presentations of Data (Slideware and
Beyond!)
- Sectionspecial topical discussion:
Music and Visualization (notation,
iTunes “visualizer,” “sonification” of signals)
- Readings Michael
Friendly’s Brief History of Data
Visualization(over Break)
Spring Break
Week 8 When to buy an ark? (statistics and uncertainty)
- 3/25 TPrediction,
Modeling and Fitting, Climate Change in Context
- 3/27 Th
Take-a-Sweater (understanding how sure to be
of a weather forecast); SPECIAL GUESTS Bill Barthelmy and Eric Floehr
- SectionHistorical examples
- ReadingsStatistics review, as-needed
- Homework Project Set 3 (Take-A-Sweater and more)
distributed 3/27; Research Project Progress Report due on 3/28 at noon; Project Set
4 data collection wil be explained on 3/27; submitted
graphic for following week should show “high-dimensional” data
Week 9: Escaping Flatland: What, really, are “Dimensions”?
- 4/1 T Does
the distinction between literal and figurative
“dimensions” matter? Should we look at
economic forecasting data like we look at heart imaging or global warming studies?
How are “information” visualization and
“scientific” visualization related?
- 4/3 Th
Techniques for showing N-D data in <N-D
spaces. What can we learn from artists?
- SectionGuest talk from Plotly co-founder
- Readings “The
Cognitive Style of PowerPoint” by Edward Tufte, plus tba
- Homework Data collection for PS4 due on 4/4.
Week 10: Play-time: “Off the Desktop” Experiences
- 4/8 TWorldWide Telescope and the Kinect; Medical
Visualization with Haptics
- 4/10 Th Visits to
the Scientists Discovery Room and Harvard Map Collection
- SectionStudent project presentations.
- Readings Entry on
Natural User
Interface
- HomeworkProject Set 3
due 4/8, Project Set 4 released 4/10
Week 11: TMI — TMI: Big Data and its (Interactive) Visualization
- 4/15 T
What is “Big” Data & how does it change anything?
- 4/17 Th
When to go interactive, and how.
- Section Student project presentations.
Week 12: Image and Meaning and Student Project Presentations
- 4/22 TImage and Meaning (in-class
workshop, with GUEST HOST Felice
Frankel (tbc))
- 4/24 Th
EMR19 Fair (student project presentations)
- Section(optional—extra help from TFs on student
project submissions)
- HomeworkProject Set 4 due 4/22
Final Class Meeting
- 4/29 T
Summary—Can there be a “theory” of quantitative
graphics?
- May 1, 2014 Final
Projects due.


SPY HARD A film review by Michael John Legeros Copyright 1996 Michael John Legeros
(Hollywood) Directed by Rick Friedberg Written by Rick Friedberg & Dick Chudnow and Jason Friedberg & Aaron Seltzer Cast Leslie Nielsen, Nicollette Sheridan, Charles Durning, Marcia Gay Harden, Barry Bostwick, Andy Griffith MPAA Rating "PG-13" Running Time 82 minutes Reviewed at Six Fork Station Cinemas, Raleigh, NC (24MAY96)
==
The rapid-fire formula that worked so well in AIRPLANE!, the "Police Squad!" television series, TOP SECRET!, three NAKED GUN films, and two HOT SHOTS! movies has finally reached a desperate dead-end with SPY HARD. Even Ezio Gregio's THE SILENCE OF THE HAMS is arguably funnier than this over-extended spy- and action-movie spoof. Leslie Nielsen stars as secret agent WD-40, who returns from retirement to battle his old nemesis, General Rancor (a cackling Andy Griffith). The jokes fly in every direction and with hardly a hint of restraint, timing, or tact. Most the movie is comprised of recycled AIRPLANE and NAKED GUN gags, recreated movie sequences, and soggy star cameos. Yeah, maybe we *do* need Ray Charles driving an L.A. bus bound for a SPEED bump, but did Mr. T, Hulk Hogan, and Dr. Joyce Brothers also have to appear in the same movie?
Leslie Nielsen plays it straight with his usual dopey flair. There is something oddly inspiring about the sight of Nielsen wearing a nun's habit, even the resulting SISTER ACT spoof is silly. As are the bits directly lifted from HOME ALONE, PULP FICTION, TRUE LIES, etc. etc. (Adolescent males might enjoy this mess, tho.  Beyond the hilarious title sequence with "Weird" Al Yankovich performing the theme song, SPY HARD is barely the stock that it's printed on. My recommendation: duck in while you're waiting for another movie to start. Stay long enough to see the camera dart inside of Weird Al's nostril and then leave. You won't miss a thing.
Grade: D-
--
Mike Legeros - Raleigh, NC
<EMAIL_ADDRESS>(h) -<EMAIL_ADDRESS>(w)
Visit me in MOVIE HELL
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


Test TAUS API in Browser (v2.0)
This is a very simple demo site for testing the TAUS API server. Version 0.1 26.09.2014
Get all translations
Get translation with id
Delete translation with id
Create a demo translation request
Note: This requires that "Cross-Origin Requests (CORS)" are activated depending on the server/client settings!
Translation Request IDs:
Translation Request ID to use:


{% load nonce %}
Do you want to accept the invitation from {{view.display_nick}}? Accepting will add {{view.display_nick}} as your contact and allow {{view.display_nick}} to see your presence updates.
To accept the invitation from {{view.display_nick}}, you need to have an account and log in.
or sign up with your email address


Privacy statement
Farlex, Inc.
Version 4.0
Effective date: April 2018
Farlex is a privately owned corporation operating in Pennsylvania, USA. Farlex is committed to providing you with excellent service for all of our products. We respect your right to privacy, and have developed this Privacy Statement to inform you about our privacy practices for the entire Farlex website and all its entities (including the farlex.com, thefreedictionary.com, thefreelibrary.com, tfd.com, and spellingcenter.com domains).
Farlex ("us", "we", or "our") operates these websites and all Farlex mobile applications (the "Service").
This page informs you of our policies regarding the collection, use, and disclosure of personal data when you use our Service and the choices you have associated with that data.
We use your data to provide and improve the Service. By using the Service, you agree to the collection and use of information in accordance with this policy. Unless otherwise defined in this Privacy Policy, terms used in this Privacy Policy have the same meanings as in our Terms and Conditions.
Privacy is of great concern to most users of the Internet, and is a critical part of an enjoyable and satisfactory user experience. We at Farlex are sensitive to the privacy concerns of our subscribers and other visitors to our Service. Whether you are a subscriber or a visitor, we assure you that we do not collect personal information from you unless you provide it to us. If you are subscribing to our premium products, you may be asked to provide certain personal and credit card information. Please note, however, that we are asking for this information for the limited purposes of managing your subscription. You should also be assured that we do not provide or sell information about our customers or site visitors to anyone except our payment gateway provider for the sole purpose of credit card processing.
Definitions
Personal Data
Personal Data means data about a living individual who can be identified from those data (or from those and other information either in our possession or likely to come into our possession).
Usage Data
Usage Data is data collected automatically either generated by the use of the Service or from the Service infrastructure itself (for example, the duration of a page visit).
Cookies
Cookies are small pieces of data stored on a User’s device.
Data Controller
Data Controller means a person who (either alone or jointly or in common with other persons) determines the purposes for which and the manner in which any personal data are, or are to be, processed.
For the purpose of this Privacy Policy, we are a Data Controller of your data.
Data Processor (or Service Providers)
Data Processor (or Service Provider) means any person (other than an employee of the Data Controller) who processes the data on behalf of the Data Controller.
We may use the services of various Service Providers in order to process your data more effectively.
Data Subject
Data Subject is any living individual who is the subject of Personal Data.
User
The User is the individual using our Service. The User corresponds to the Data Subject, who is the subject of Personal Data.
Information Collection And Use
We collect several different types of information for various purposes to provide and improve our Service to you.
Types of Data Collected
Personal Data
We do not collect any personal information from a visitor to our sites unless that visitor explicitly and intentionally provides it. Under no circumstances do we collect any personal data revealing racial or ethnic origin, political opinions, religious or philosophical beliefs, trade union membership, health, or sex life. If you are simply browsing our sites, we do not gather any personal information about you. Providing your personal data to us is not mandatory to use our Service.
While using our Service, we may ask you to provide us with certain personally identifiable information that can be used to contact or identify you ("Personal Data"). Personally identifiable information may include, but is not limited to:
- Email address
- First name and last name
- Phone number
- Address, State, Province, ZIP/Postal code, City
- Cookies and Usage Data
We may use your Personal Data to contact you with newsletters, marketing or promotional materials and other information that may be of interest to you. You may opt out of receiving any, or all, of these communications from us by following the unsubscribe link or instructions provided in any email we send.
Usage Data
We may also collect information that your browser sends whenever you visit our Service or when you access the Service by or through a mobile device ("Usage Data").
This Usage Data may include information such as your computer's Internet Protocol address (e.g. IP address), browser type, browser version, the pages of our Service that you visit, the time and date of your visit, the time spent on those pages, unique device identifiers and other diagnostic data.
When you access the Service by or through a mobile device, this Usage Data may include information such as the type of mobile device you use, your mobile device unique ID, the IP address of your mobile device, your mobile operating system, the type of mobile Internet browser you use, unique device identifiers and other diagnostic data.
Tracking Cookies Data
We use cookies and similar tracking technologies to track the activity on our Service and hold certain information.
Cookies are files with small amount of data which may include an anonymous unique identifier. Cookies are sent to your browser from a website and stored on your device. Tracking technologies also used are beacons, tags, and scripts to collect and track information and to improve and analyze our Service.
You can instruct your browser to refuse all cookies or to indicate when a cookie is being sent. However, if you do not accept cookies, you may not be able to use some portions of our Service.
- Session Cookies. We use Session Cookies to operate our Service.
- Preference Cookies. We use Preference Cookies to remember your preferences and various settings.
- Security Cookies. We use Security Cookies for security purposes.
- Advertising Cookies. Advertising Cookies are used to serve you with advertisements that may be relevant to you and your interests.
Use of Data
- To provide and maintain our Service
- To notify you about changes to our Service
- To allow you to participate in interactive features of our Service when you choose to do so
- To provide customer support
- To gather analysis or valuable information so that we can improve our Service
- To monitor the usage of our Service
- To detect, prevent and address technical issues
- To provide you with news, special offers, and general information about other goods, services, and events which we offer that are similar to those that you have already purchased or inquired about unless you have opted not to receive such information
Retention of Data
Farlex will retain your Personal Data only for as long as is necessary for the purposes set out in this Privacy Policy. We will retain and use your Personal Data to the extent necessary to comply with our legal obligations (for example, if we are required to retain your data to comply with applicable laws), resolve disputes, and enforce our legal agreements and policies.
Farlex will also retain Usage Data for internal analysis purposes. Usage Data is generally retained for a shorter period of time, except when this data is used to strengthen the security or to improve the functionality of our Service, or we are legally obligated to retain this data for longer time periods.
Transfer Of Data
Your information, including Personal Data, may be transferred to — and maintained on — computers located outside of your state, province, country or other governmental jurisdiction where the data protection laws may differ than those from your jurisdiction.
If you are located outside United States and choose to provide information to us, please note that we transfer the data, including Personal Data, to United States and process it there.
Your consent to this Privacy Policy followed by your submission of such information represents your agreement to that transfer.
Farlex will take all steps reasonably necessary to ensure that your data is treated securely and in accordance with this Privacy Policy and no transfer of your Personal Data will take place to an organization or a country unless there are adequate controls in place including the security of your data and other personal information.
Disclosure Of Data
Disclosure for Law Enforcement
Under certain circumstances, Farlex may be required to disclose your Personal Data if required to do so by law or in response to valid requests by public authorities (e.g. a court or a government agency).
Legal Requirements
- To comply with a legal obligation
- To protect and defend the rights or property of Farlex
- To prevent or investigate possible wrongdoing in connection with the Service
- To protect the personal safety of users of the Service or the public
- To protect against legal liability
Security Of Data
We consider the protection of all personally identifiable information we receive from our visitors and subscribers as critical to our corporate mission. Please be assured that we have security measures in place to protect against the loss and misuse of any information we receive from you. However, no method of transmission over the Internet or method of electronic storage is 100% secure. While we strive to use commercially acceptable means to protect your Personal Data, we cannot guarantee its absolute security. In order to try to minimize this risk, we encrypt all information that you submit in ordering of our premium products using the Secure Sockets Layer (SSL) protocol.
"Do Not Track" Signals
We do not support Do Not Track ("DNT"). Do Not Track is a preference you can set in your web browser to inform websites that you do not want to be tracked.
You can enable or disable Do Not Track by visiting the Preferences or Settings page of your web browser.
Your Rights
Farlex aims to take reasonable steps to allow you to correct, amend, delete, or limit the use of your Personal Data.
Whenever made possible, you can update your Personal Data directly within your account settings section. If you are unable to change your Personal Data, please contact us to make the required changes.
If you wish to be informed what Personal Data we hold about you and if you want it to be removed from our systems, please contact us.
- To access and receive a copy of the Personal Data we hold about you
- To rectify any Personal Data held about you that is inaccurate
- To request the deletion of Personal Data held about you
You have the right to data portability for the information you provide to Farlex. You can request to obtain a copy of your Personal Data in a commonly used electronic format so that you can manage and move it.
Please note that we may ask you to verify your identity before responding to such requests.
Service Providers
We may employ third party companies and individuals to facilitate our Service ("Service Providers"), to provide the Service on our behalf, to perform Service-related services or to assist us in analyzing how our Service is used.
These third parties have access to your Personal Data only to perform these tasks on our behalf and are obligated not to disclose or use it for any other purpose.
Analytics
We may use third-party Service Providers to monitor and analyze the use of our Service.
Google Analytics
Google Analytics is a web analytics service offered by Google that tracks and reports website traffic. Google uses the data collected to track and monitor the use of our Service. This data is shared with other Google services. Google may use the collected data to contextualize and personalize the ads of its own advertising network.
You can opt-out of having made your activity on the Service available to Google Analytics by installing the Google Analytics opt-out browser add-on. The add-on prevents the Google Analytics JavaScript (ga.js, analytics.js, and dc.js) from sharing information with Google Analytics about visits activity.
For more information on the privacy practices of Google, please visit the Google Privacy Terms web page: http://www.google.com/intl/en/policies/privacy/
Advertising
We may use third-party Service Providers to show advertisements to you to help support and maintain our Service. These companies may use information about your interests in order to provide advertisements about goods and services of interest to you. If you would like more information about this practice and to know your choices about not having this information used by these companies, see the Digital Advertising Alliance’s or Network Advertising Initiative’s website.
We may use third-party Service Providers to show advertisements to you to help support and maintain our Service.
Google AdSense DoubleClick Cookie
Google, as a third party vendor, uses cookies to serve ads on our Service. Google's use of the DoubleClick cookie enables it and its partners to serve ads to our users based on their visit to our Service or other websites on the Internet.
You may opt out of the use of the DoubleClick Cookie for interest-based advertising by visiting the Google Ads Settings web page: http://www.google.com/ads/preferences/
AdMob by Google
AdMob by Google is provided by Google Inc.
You can opt-out from AdMob by Google service by following the instructions described by Google: https://support.google.com/ads/answer/2662922?hl=en
For more information on how Google uses the collected information, please visit the "How Google uses data when you use our partners' sites or app" page: http://www.google.com/policies/privacy/partners/ or visit the Privacy Policy of Google: http://www.google.com/policies/privacy/
MoPub
MoPub is provided by MobPub, Inc.
You can opt-out from MobPub service by following the instructions on MoPub Opt-out page: http://www.mopub.com/optout/
For more information on what information MobPub collects and how it's used, please read MoPub Privacy Policy: http://www.mopub.com/legal/privacy/
Flurry
Flurry is provided by Yahoo! Developer Network, an Oath Brand.
You can opt-out from Flurry service by following the instructions on the Flurry Opt-out page: https://aim.yahoo.com/aim/us/en/optout/
For more information on what information Flurry collects and how it's used, please read the Privacy Policy: https://policies.yahoo.com/us/en/yahoo/privacy/index.htm
InMobi
InMobi is provided by InMobi Pte Ltd.
You can opt-out from InMobi service by following the instructions on the InMobi Opt-out page: https://www.inmobi.com/page/opt-out/
For more information on what information InMobi collects and how it's used, please read the InMobi Privacy Policy: https://www.inmobi.com/privacy-policy/
Payments
We may provide paid products and/or services within the Service. In that case, we use third-party services for payment processing (e.g. payment processors).
We will not store or collect your payment card details. That information is provided directly to our third-party payment processors whose use of your personal information is governed by their Privacy Policy. These payment processors adhere to the standards set by PCI-DSS as managed by the PCI Security Standards Council, which is a joint effort of brands like Visa, Mastercard, American Express and Discover. PCI-DSS requirements help ensure the secure handling of payment information.
The payment processors we work with are:
Apple Store In-App Payments
Their Privacy Policy can be viewed at https://www.apple.com/legal/privacy/en-ww/
Google Play In-App Payments
Their Privacy Policy can be viewed at https://www.google.com/policies/privacy/
PayPal
Their Privacy Policy can be viewed at https://www.paypal.com/webapps/mpp/ua/privacy-full
Links To Other Sites
Our Service may contain links to other sites that are not operated by us. If you click on a third party link, you will be directed to that third party's site. We strongly advise you to review the Privacy Policy of every site you visit.
We have no control over and assume no responsibility for the content, privacy policies or practices of any third party sites or services.
Children's Privacy
Our Service does not address anyone under the age of 13 ("Children").
We do not knowingly collect personally identifiable information from anyone under the age of 13. If you are a parent or guardian and you are aware that your Children has provided us with Personal Data, please contact us. If we become aware that we have collected Personal Data from children without verification of parental consent, we take steps to remove that information from our servers.
Facilitating the Support, Renewal, and Purchase of our Products and Services
We may use the information you submit to contact you to discuss the support, renewal, and purchase of our premium products and services. You may receive a communication directly from one of our customer care representatives. Please be assured that we will keep the communications to a minimum and you will have an option to block any communication from us if your subscriptions are cancelled.
Please be aware that we reserve the right to notify our subscribers of any information that affects the status of current subscriptions. You may not opt out of receiving information regarding the expiration and renewal of the subscriptions, account balances or the payment history and status.
Changes To This Privacy Policy
We may update our Privacy Policy from time to time. We will notify you of any changes by posting the new Privacy Policy on this page.
We will let you know via email and/or a prominent notice on our Service, prior to the change becoming effective and update the "effective date" at the top of this Privacy Policy.
You are advised to review this Privacy Policy periodically for any changes. Changes to this Privacy Policy are effective when they are posted on this page.
Contact Us
If you have any questions about this Privacy Policy, please contact us by emailing info[at]tfd[dot]com.


vignettes/key_considerations.Rmd
key_considerations.Rmd
The purpose of the Methodology, Key Considerations, and FAQs is to address questions that users have regarding the correlationfunnel
methodology and to highlight key considerations before or after various steps in correlationfunnel
process.
Libraries used.
library(correlationfunnel) library(dplyr) library(tibble) library(ggplot2) library(stringr) library(forcats) library(knitr)
The method used is to perform binarization, the process of converting numeric and categorical variables to binary variables, and then to perform correlation analysis (Pearson method is used by default as the corelate()
function wraps stats::cor()
). This method lends itself well to quickly understanding relationships in data.
The Pearson correlation coefficient (see phi coefficient) measures the linear correlation between two dichotomous (binary) variables.
\[\phi = \frac{f_{11}*f_{00}-f_{01}*f_{10}}{\sqrt{(f_{11}+f_{01})*(f_{10}+f_{00})*(f_{00}+f_{01})*(f_{10}+f_{11})}}\]
Where from a Contingency Table,
| y=0 | y=1 | |
|---|---|---|
| x=0 | f00 | f01 |
| x=1 | f10 | f11 |
Use of this method and tradeoffs are discussed at length herein and in L. Duan et al., 2014.1
We recommend using the following best practices to get high performance with correlationfunnel
:
Clean the Data - Make sure categorical data and numeric data are cleaned to take care of any errors and missing values.
Perform Feature Engineering - Make sure useful information any text fields (e.g. description fields). Make sure date fields are converted to categorical data like day of the week. Use
Discard Features Known to Have No Predictive Value - Example ID fields
Discard ALL Non-Numeric and Non-Categorial Data - Remove date or datetime features, generic discription fields.
Sample Data if Large - Performance could become slow on large data sets (Many Columns, Many Rows, and Many Category Levels within Categorical Columns).
thresh_infreq
to limit the number of infrequently appearing categoriesThe binarize()
function performs the transformation from numeric/categorical data to binary data. Use the following parameters to ensure that the correlation step goes well.
Specify Number of Bins (Numeric Data) - Use n_bins
to control the number of bins that numeric data is binned into. Too many and data gets overly discrete. Too few and trend can be missed. Typically 4 or 5 bins is adequate.
Eliminate Infrequent Categories (Categorical Data) - Use thresh_infreq
to control the appearance of infrequent categories. This will speed up processing of the correlation and prevent dimensionality (width of columns) getting out of control. Typically 0.01 threshold is adequate.
Garbage In, Garbage Out - Using the correlationfunnel
package on data that has little relationship will not yield good results. If you are not getting good results by following the afformentioned “Key Considerations”, then your data may have little relationship. This is useful and a sign that you may need to collect better data.
Something Bad Happened or You Think Something Good Should Have Happened - File an error on GitHub if you have a question and you believe that correlationfunnel
should be reporting something differently and/or has an error.
The approach to numeric data is to bin. This works well when non-linear relationships are present at the expense of a slight loss in linear relationship identification. We’ll see examples using synthetic data to illustrate this point.
Let’s make some sample data for Sales versus a highly correlated Macroeconomic Predictor.
# Generate Data set.seed(1) linear_data <- tibble( sales = rnorm(100, mean = 10, sd = 5) + seq(1, 200,length.out = 100) * 1e6, macro_indicator = rnorm(100, mean = 1, sd = 2) + seq(5, 20, length.out = 100) ) %>% mutate_all(~round(., 2)) # Plot Relationship linear_data %>% ggplot(aes(macro_indicator, sales)) + geom_point(alpha = 0.5) + geom_smooth(method = "lm") + scale_y_continuous(labels = scales::dollar_format(scale = 1e-6, suffix = "M")) + labs(title = "Data with Linear Relationship")
We can see that the correlation between the two features is approximately 0.9.
linear_data %>% correlate(target = sales) #> # A tibble: 2 x 3 #> feature bin correlation #> <fct> <chr> <dbl> #> 1 sales <NA> 1 #> 2 macro_indicator <NA> 0.918
What happens when we binarize()
? What we want to know is which segment of the Macroeconomic Indicator is most correlated with the highest sales bin.
linear_data_corr_tbl <- linear_data %>% binarize() %>% correlate(sales__150250005.6625_Inf) linear_data_corr_tbl #> # A tibble: 8 x 3 #> feature bin correlation #> <fct> <chr> <dbl> #> 1 sales 150250005.6625_Inf 1 #> 2 macro_indicator 17.635_Inf 0.787 #> 3 sales -Inf_50750010.5625 -0.333 #> 4 sales 50750010.5625_100500013.2 -0.333 #> 5 sales 100500013.2_150250005.6625 -0.333 #> 6 macro_indicator -Inf_9.5 -0.333 #> 7 macro_indicator 9.5_12.175 -0.333 #> 8 macro_indicator 12.175_17.635 -0.12
We can see that the best relationship between the highest sales bin is the highest macroeconomic indicator bin. The magnitude of the correlation is lower, but it’s still relatively high at approximately 0.8.
When we visualize with plot_correlation_funnel()
, the macroeconomic predictor trend shows up indicating the highest macroeconomic indicator bin is highly correlated with the highest sales bin.
linear_data_corr_tbl %>% plot_correlation_funnel()
The real beauty of the binning process is when nonlinear trends are present. Let’s again make some synthetic data this time between sales and age of customer.
# Generate synthetic data set.seed(1) nonlinear_data <- tibble( sales = c( rnorm(100, mean = 10, sd = 25), rnorm(100, mean = 50, sd = 100), rnorm(100, mean = 2, sd = 40)), age = c( runif(100, min = 20, max = 29), runif(100, min = 30, max = 39), runif(100, min = 39, max = 59) ) ) %>% mutate( sales = ifelse(sales < 0, 0, sales) %>% round(2), age = floor(age) ) # Visualize the nonlinear relationship nonlinear_data %>% ggplot(aes(age, sales)) + geom_point(alpha = 0.5) + geom_smooth(method = "lm") + scale_y_continuous(labels = scales::dollar_format()) + expand_limits(y = 300) + labs(title = "Data with Non-Linear Relationship")
We can see that the age range between 30 and 37 has much larger sales than the other age ranges. However, a linear trendline is flat indicating essentially no linear relationship.
The correlation analysis on un-binned data similarly expresses the magnitude of the relationship at approximately 0.
nonlinear_data %>% correlate(sales) #> # A tibble: 2 x 3 #> feature bin correlation #> <fct> <chr> <dbl> #> 1 sales <NA> 1.00 #> 2 age <NA> -0.0459
However, when we bin the data, the relationship is exposed. The bin age 31-36 has a 0.25 correlation, which is quite high for real data. This indicates predictive power. Below 25 at -0.18 is negatively correlated, and likewise above 46 is negatively correlated. This tells the story that the 30-36 age range is the most likely group to purchase products.
nonlinear_data_corr_tbl <- nonlinear_data %>% binarize(n_bins = 5) %>% correlate(sales__46.552_Inf) nonlinear_data_corr_tbl #> # A tibble: 9 x 3 #> feature bin correlation #> <fct> <chr> <dbl> #> 1 sales 46.552_Inf 1 #> 2 sales -Inf_5.07000000000002 -0.408 #> 3 sales 5.07000000000002_23.936 -0.25 #> 4 sales 23.936_46.552 -0.25 #> 5 age 31_36 0.246 #> 6 age -Inf_25 -0.182 #> 7 age 46_Inf -0.126 #> 8 age 36_46 0.0809 #> 9 age 25_31 -0.0168
We can confirm the relationship visually using plot_correlation_funnel()
.
nonlinear_data_corr_tbl %>% plot_correlation_funnel(limits = c(-0.2, 1))
Highly skewed numeric data is tricky because the binning strategy does not conform well to the traditional quantile()
approach for cutting data into bins. One bin tends to dominate.
To get around this issue, the binarize()
function attempts to cut using the n_bins
value provided by you.
When data becomes highly skewed, meaning one numeric value dominates so much that virtually all values are this value, the cuts are iteratively reduced until only 2 bins are left.
At that point the algorithm converts the values to factors, and anything that is not in the majority class gets a class of “OTHER” (or the value you provide as name_infreq
).
We’ll show this process using skewed features in the marketing_campaign_tbl
data that ships with correlationfunnel
.
data("marketing_campaign_tbl") marketing_campaign_tbl #> # A tibble: 45,211 x 18 #> ID AGE JOB MARITAL EDUCATION DEFAULT BALANCE HOUSING LOAN CONTACT #> <chr> <dbl> <chr> <chr> <chr> <chr> <dbl> <chr> <chr> <chr> #> 1 2836 58 mana… married tertiary no 2143 yes no unknown #> 2 2837 44 tech… single secondary no 29 yes no unknown #> 3 2838 33 entr… married secondary no 2 yes yes unknown #> 4 2839 47 blue… married unknown no 1506 yes no unknown #> 5 2840 33 unkn… single unknown no 1 no no unknown #> 6 2841 35 mana… married tertiary no 231 yes no unknown #> 7 2842 28 mana… single tertiary no 447 yes yes unknown #> 8 2843 42 entr… divorc… tertiary yes 2 yes no unknown #> 9 2844 58 reti… married primary no 121 yes no unknown #> 10 2845 43 tech… single secondary no 593 yes no unknown #> # … with 45,201 more rows, and 8 more variables: DAY <dbl>, MONTH <chr>, #> # DURATION <dbl>, CAMPAIGN <dbl>, PDAYS <dbl>, PREVIOUS <dbl>, #> # POUTCOME <chr>, TERM_DEPOSIT <chr>
The “CAMPAIGN” feature is skewed. It cannot be binned with 4 bins because the quantile has only 4 unique values (enough for 3 bins: 1-2, 2-3, 3-63).
We can see the skew visually.
marketing_campaign_tbl %>% ggplot(aes(CAMPAIGN)) + geom_histogram() + labs(title = "Skewed Data")
We can see that binarize()
recognizes this and bins accordingly.
At some point, binning becomes impossible because only 2 values exist. Rather than drop the feature, binarize()
converts it to a factor()
and the one-hot encoding process takes over using the thresh_infreq
argument for converting any low frequency factors to a generic “OTHER” category.
We can see that the “PDAYS” feature is highly skewed with almost all values are -1
.
We can see the high skew visually.
marketing_campaign_tbl %>% ggplot(aes(PDAYS)) + geom_histogram() + labs(title = "Highly Skewed Data")
We can see that binarize()
converts this feature to categorical data then the categorical threshold takes over. Just specify the proportion of low frequency categories to retain.
We’ve actually already seen this. The binarization processed when performed on numeric data converts the data to bins and then one-hot encodes the result. The bins are categories.
The process for categorical data works the same as for numeric (minus the binning process).
Let’s take a categorical feature from our marketing_campaign_tbl
.
marketing_campaign_tbl %>% select(EDUCATION) #> # A tibble: 45,211 x 1 #> EDUCATION #> <chr> #> 1 tertiary #> 2 secondary #> 3 secondary #> 4 unknown #> 5 unknown #> 6 tertiary #> 7 tertiary #> 8 tertiary #> 9 primary #> 10 secondary #> # … with 45,201 more rows
The binarize()
function uses One-Hot Encoding by default. The Dummy Encoding Method has a key flaw for Correlation Analysis in that it does not show all of the categorical levels. This affects the Correlation Funnel Plot causing loss of potentially highly correlated bins in the visualization.
One-Hot Encoding is the process of converting a categorical feature into a series of binary features. The default in binarize()
is to perform one-hot encoding, which returns the number of columns equal to the number of levels in the category. This creates a series of binary flags to use in the Correlation Analysis.
marketing_campaign_tbl %>% select(EDUCATION) %>% binarize(one_hot = TRUE) #> # A tibble: 45,211 x 4 #> EDUCATION__primary EDUCATION__secondary EDUCATION__tertiary EDUCATION__unkno… #> <dbl> <dbl> <dbl> <dbl> #> 1 0 0 1 0 #> 2 0 1 0 0 #> 3 0 1 0 0 #> 4 0 0 0 1 #> 5 0 0 0 1 #> 6 0 0 1 0 #> 7 0 0 1 0 #> 8 0 0 1 0 #> 9 1 0 0 0 #> 10 0 1 0 0 #> # … with 45,201 more rows
Another popular method in statistical analysis is Dummy Encoding. The only real difference is that the number of columns are equal to the number of levels minus 1. When zeros are present in each of the new columns (secondary, tertiary, unknown) such as in Row 9, the value means not secondary, tertiary, or unknown, which in turn means primary.
marketing_campaign_tbl %>% select(EDUCATION) %>% binarize(one_hot = FALSE) #> # A tibble: 45,211 x 3 #> EDUCATION__secondary EDUCATION__tertiary EDUCATION__unknown #> <dbl> <dbl> <dbl> #> 1 0 1 0 #> 2 1 0 0 #> 3 1 0 0 #> 4 0 0 1 #> 5 0 0 1 #> 6 0 1 0 #> 7 0 1 0 #> 8 0 1 0 #> 9 0 0 0 #> 10 1 0 0 #> # … with 45,201 more rows
The binarize()
function uses a parameter thresh_infreq = 0.01
and name_infreq = "OTHER"
to keep infrequent categories that add little value to the analysis from unnecessarily increasing dimensionality.
Dimensionality Reduction is important for the correlation analysis. Categorical data can quickly get out of hand causing the width (number of columns) to increase, which is known as High Dimensionality. The One-Hot Encoding process will add a lot of features if not kept in check.
High Dimensionality is a two-fold problem. First, having many features adds to the computation time to analyze data. This is particularly painful on large data sets (5M rows+). Second, adding infrequent features (low occurrance) typically adds little predictive value to the modeling process.
To prevent this High Dimensionality situation, the binarize()
function contains a thresh_infreq
argument that lumps infrequent categories together based on a threshold of proportion within the rows of the data. For example, a thresh_infreq = 0.01
lumps any factors present in less than 1% of the data into a new category defined by name_infreq = "-OTHER"
(you can change this name for the lumped category).
Let’s examine the “JOB” categorical feature from the marketing_campaign_tbl
, which has 12 levels, one for the category of Job that the customer falls into. We can se that using binarize()
creates 12 new features.
marketing_campaign_tbl %>% select(JOB) %>% binarize(thresh_infreq = 0) %>% glimpse() #> Rows: 45,211 #> Columns: 12 #> $ JOB__admin. <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, … #> $ `JOB__blue-collar` <dbl> 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, … #> $ JOB__entrepreneur <dbl> 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, … #> $ JOB__housemaid <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, … #> $ JOB__management <dbl> 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, … #> $ JOB__retired <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, … #> $ `JOB__self-employed` <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, … #> $ JOB__services <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, … #> $ JOB__student <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, … #> $ JOB__technician <dbl> 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, … #> $ JOB__unemployed <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, … #> $ JOB__unknown <dbl> 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
Examining these features, not all are present frequenly. We can see that several features appear only 5% or less of the time.
marketing_campaign_tbl %>% # Count Frequency count(JOB) %>% mutate(prop = n / sum(n)) %>% # Format columns for plot mutate(JOB = as.factor(JOB) %>% fct_reorder(n)) %>% mutate(label_text = str_glue("JOB: {JOB} Count: {n} Prop: {scales::percent(prop)}")) %>% # Creat viz ggplot(aes(JOB, n)) + geom_point(aes(size = n)) + geom_segment(aes(yend = 0, xend = JOB)) + geom_label(aes(label = label_text), size = 3, hjust = "inward") + coord_flip() + labs(title = "Frequency of Each Level in JOB Feature")
We can reduce the dimensionality of this feature by increasing the grouping to 6% using thresh_infreq = 0.06
. Now the features with presence less than 6% are grouped into an “-OTHER” category.
marketing_campaign_tbl %>% select(JOB) %>% binarize(thresh_infreq = 0.06, name_infreq = "-OTHER") %>% glimpse() #> Rows: 45,211 #> Columns: 6 #> $ JOB__admin. <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1,… #> $ `JOB__blue-collar` <dbl> 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,… #> $ JOB__management <dbl> 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,… #> $ JOB__services <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,… #> $ JOB__technician <dbl> 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0,… #> $ `JOB__-OTHER` <dbl> 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0,…
Once the data has been One-Hot Encoded, Correlation Analysis proceeds as normal.
marketing_campaign_tbl %>% binarize(n_bins = 5, thresh_infreq = 0.06, name_infreq = "-OTHER") %>% correlate(TERM_DEPOSIT__yes) %>% plot_correlation_funnel(alpha = 0.7)
[L. Duan et al., 2014] Lian Duan, W. Nick Street, Yanchi Liu, Songhua Xu, and Brook Wu. 2014. Selecting the right correlation measure for binary data. ACM Trans. Knowl. Discov. Data 9, 2, Article 13 (September 2014), 28 pages. DOI: http://dx.doi.org/10.1145/2637484↩


My name: Hyun Woo Choi
Birth: Jan 22, 1998
Nationality: Korean
Address: ..........
Education: Logos Internation School
Biography: I was born in Seoul, Korea. Lived in Korea until I was 5 years old.
Just few days after my birthday, my family moved to Cambodia.
So now, it is almost 14 years that I lived in Cambodia.
Currently a Junior in Logos. Studied in Logos since kindergarden.


Google Summer of Code Progress August 19
So we are at the end of this awesome summer and this post is about the progress in my final weeks of GSOC 2016! And the major addition in this period is the development stats visualization page.
GitHub stats visualization
As we had planned, the new Dipy website needed a page to highlight the growing number of developers and their contributions to the Dipy project. And finally we have achieved that with a separate django app that creates visualizations with data pulled from GitHub API, and for drawing some neat graphs I have used the Chart.js library.
And hey its a separate django app!
So it can be integrated easily into any other django project! Simply copy the github_visualization folder into your project and add github_visualization
to the INSTALLED_APPS
list in settings.py.
Now you just need to add a couple of lines to the template in which you want to show the visualizations.
Just change the ‘username’ and ‘repository_name’ to point to the GitHub repository you want to see visualizations for.
The work was submitted throught the pull request #15.
Posted with Tags:


Welcome to Sypher!
A very simple minimalist static blog system.
Sypher is a very simple static blog system, minimalist and lightweight. It's intended to allows you write fast using an easy-to-use language and a script generates all HTML and CSS files needed to it working right. See below some advantages.
1 - It can be used in GitHub Pages.
Github pages is a hosting service. You can host only a static website and Sypher was built focusing it, obviously you can host a Sypher blog in any place, but using GitHub pages you can do it for free and fast!
2 - Use a VERY simple Markdown language to write posts.
Markdown it's a very simple markup language that converts text into HTML. You do write it in a plain text file(using a Markdown format) and it will be converted in runtime to a pretty blog post.
3 - Sypher is design responsive.
You can read your posts with any device, it works well since 480px width devices.
4- It's free to use.
Sypher is free to use, just fork the github repo and start to write!
5- There aren't external scripts needed and no technical knowledge required.
Sypher is a web front-end working in runtime, it means you don't need to install and learn how to use nodeJS, Ruby or any additional tool to be able to use that. It works only in a web browser as Firefox or Chrome. Using Sypher you need to worry just about your post content and nothing more.


Without Limits (Reviewed on Sept. 28/98)
Starring Billy Crudup, Donald Sutherland, Monica Potter
"Without Limits" is the second film in less than a year to tell the story of Steve Prefontaine, one of the greatest runners in American History. The first was called "Prefontaine", and I did not like it much. It started off well enough, but then ran out of steam too quickly. "Without Limits", unfortunately, follows the same pattern.
"Without Limits" stars relative unknown Billy Crudup as the charismatic Prefontaine, and Sutherland as his coach and mentor, Bill Bowerman. The performances are top-notch, with Crudup giving a star-making performance as the doomed athelete. Monica Potter is the only weak link in the cast. It seems she was hired simply because she is pretty, because she elicited no interest from myself. I was bored everytime she was on screen, and found her performance comprable to a Cigar Store Indian, except the Cigar Store Indian is much more interesting to look at.
As with "Prefontaine", the movie starts out quite well. During the first half-hour, I was relieved to find that the director, the legendary Robert Towne, had chosen to film Pre's story in a linear fashion, unlike the earlier film, which was shot in a pseudo-documentary style which was exceptionally distracting. However, as the movie progressed, I found myself experiencing a sense of deja vu. Like "Prefontaine", I was becoming more and more impatient with the film as it went on. Once Pre goes to the Olympics, is there really much more to say? I don't think so. All that stuff about his fight with the Amateur Athletes Association was nothing but filler. A movie about a world-famous runner should concern itself with only what made the man such a legend. I don't care whether or not he was a lothario off the track, I only want to know about what happened *on* the track.
Since I have disliked this film and "Prefontaine", I can come to only one conclusion: While Pre may have been the greatest runner of his time, his life just isn't filmable. He didn't do enough to fill a two-hour running time.
"Without Limits" is worthwhile only for the performances of it's two leads, and nothing else.
** out of ****
-- David Nusair<EMAIL_ADDRESS>Come visit my "Reel Film Reviews" site! "http://chat.carleton.ca/~dnusair"
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


Add some information about the album below, the author, or any other background context. Make it a few sentences long so folks can pick up some informative tidbits. Then, link them off to some social networking sites or contact information.
Pages
{% assign default_paths = site.pages | map: "path" %}
{% assign page_paths = site.header_pages | default: default_paths %}
{% if page_paths %}
{% for path in page_paths %}
{% assign my_page = site.pages | where: "path", path | first %}
{% if my_page.title %}


oc adm new-project <projectname> --admin={{$ctrl.user.metadata.name || '<YourUsername>'}}
The complete list of your projects could not be loaded. Type a project name to go to that project.
– created by


Our work started in 2012 with the idea that we should somehow affiliate these genres to do something awesomely unusual. It’s also motivation to make a difference in the thinking about the dynamic of the Hungarian music culture by making a new, different mainstream all along with lots of other bands we know and support.
In 2016 we released our first EP named Szófiai Utcakő in which lyrics of our songs express social critic, moderate political sarcasm, tolerance towards each other and world peace.
Our venues in the past included Flórián tér, Muzikum Klub, Kis Á, Gödör Klub, Magyar Színház, Bori Vár and lots of other places.
Our appearances occur monthly concentrated mainly to the area near and in Budapest.
{{musician.description}}


FWF Data Management Plan Template (DMP)
| Data Officer | {{ data_officer }} | |
| I | Data Characteristics | |
| I.1 | Description of the data | {{ data_characteristics }} |
| II | Documentation and Metadata | |
| II.1 | Metadata standards | {{ meta_standards }} |
| II.2 | Documentation of data | {{ data_documentation }} |
| II.3 | Data quality control | {{ data_quality }} |
| III | Data Availability and Storage | |
| III.1 | Data sharing strategy | {{ data_sharing }} |
| III.2 | Data storage strategy | {{ data_storage }} |
| IV | Legal and Ethical Aspects | |
| IV.1 | Legal aspects | {{ legal }} |
| IV.2 | Ethical aspects | {{ ethical }} |
| No data will be generated or analysed | {{ generation }} |


LAST NIGHT
Reviewed by Harvey Karten, Ph.D. Lions Gate Films Director: Don McKellar Writer: Don McKellar Cast: David Cronenberg, Tracy Wright, Genevieve Bujold, Roberta Maxwell, Robin Gammel, Trent McMullen, Karen Glave, Jackie Burroughs, Arsinee Khanjian, Don McKellar, Sandra Oh, Sarah Polley, Callum Keith Rennie
As the millennium approaches, the assassination of President Kennedy will undoubtedly make the news magazines as one of the seminal events of the century. Remember the big question whose answer everyone over 40 seems to know, "Where were you on the day that JFK was killed?" In the Canadian movie "Last Night," which was a surprise hit at the 1998 Toronto International Film Festival and won the prestigious Prix de la jeunesse at Cannes, Don McKellar has a more interesting query. "Where were you on the night the world came to an end?" We seem to have some time left before that milestone in the Earth's sorry history, so let's rephrase: "What do you think you'll be doing during the final hours of humankind's existence?" Completing a round-the-world excursion? Smoking your final joint at a week-long party with friends? Huddled and trembling in the corner like a hapless schizophrenic? Mc Kellar--a talented young man who wrote the offbeat "Thirty- two Short Films About Glenn Gould" and the epic, if bloated, "The Red Violin"--suggests otherwise, using a diverse group of Toronto residents to stand in for the world at large.
McKellar's would appear a natural subject for a movie about the ultimate fin de siecle, and yet when you think back to how the Americans treated the theme-- in "Armageddon," "Deep Impact," and the like--you get what Hollywood knows its market wants: explosions, heavy violence, and the use of all the special effects that money can buy to ignite and convulse the screen. Though "Last Night" is not without chaos, the disorder is carried out only by the crazy teen-agers in the cast who do little more than shoot a guy off screen, roll over a couple of vehicles, and cheer amid confetti in Toronto's principal square as the clock ticks the time to termination. McKellar focuses inward to afford us a film whose positive features are its originality, sensitivity, and unpredictability, but whose noble aims are all but overrun by largely mediocre improvisation-style acting and the image of an off-Broadway play adapted to the screen by a guy with a limited budget.
Though they say that in your final moments, your entire life passes before your eyes, the gang of Canadians--some earnest, some quirky--go about their lives as though nothing more depressing than another New Year's Eve were taking place. Chief among the surprises is the activity of Duncan the gas man (David Cronenberg of all people), whose startles the audience by being so utterly matter-of-fact. Duncan spends Earth's final six hours sitting at the phone in the office of his company calling people in the region to assure them that the company expects to supply its product until the very end. The sole comic moments in this otherwise astonishingly ordinary, mundane group are supplied by Craig Zwiller (Callum Keith Rennie), a fun-loving puckish fellow who is the only one in the picture doing what you might expect a fun-loving fellow to do: his aim is to have every kind of sex imaginable during the world's final two months, and he has strewn a check list across every inch of wallspace in his kitchen outlining the specifics. To no one's surprise he finds virtually all the willing partners he needs--people of all races and proclivities, not exluding a fifty-ish virgin (Tracy Wright) and his former French teacher, Mrs. Carlton (Genevieve Bujold).
 Though his character, Patrick, shares with Greta Garbo a need to be alone on this of all nights, away from his decent, prayerful family (Roberta Maxwell and Robin Gammel as Mr. and Mrs. Wheeler), he is jolted back to life by an amazing encounter with an intelligent but desperate woman of Asian background, Sandra (Sandra Oh). Sandra is eager to get home to the husband she loves but, realizing that this is not going to happen, spends her final hours discussing life and death with the newly invigorated young man.
While granting that "Last Night" is a welcome change from the types of disaster movies realized in razzle-dazzle manners by Hollywood (here we have no idea how and why the earth is ending nor should we care), this off-beat Canadian entry with a dollop of black humor, a generous serving of philosophy, and an entirely sober concept of what we'll be doing just before the second Big Bang, is done in by its staginess. McKellar might well consider taking his script to prestigious off-Broadway theaters in New York such as the Promenade and the CSC Repertory. "Last Night" is the work of a good playwright, not a screenwriter.
Not Rated. Running Time: 93 minutes. (C) 1999 Harvey Karten
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews